Προς το περιεχόμενο

Web services CURL


eleionos

Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)

Καλημέρα στην κοινότητα. Σε wordpess site έχω  εγκαταστήσει το Insert PHP Code Snippet .Σε ένα post θέλω να εμφανίσω τα αποτελέσματα από το request που κάνω σε web service 

 

$url = 'http://myUrl/s1services';
$ch = curl_init($url);

//The JSON data.
$jsonData = array(
 'service' => 'login',    
 'username' => 'username',
 'password' => 'password',
 'appid' =>  '256'
);

//Encode the array into JSON.
$jsonData = json_encode($jsonData);

//Tell cURL that we want to send a POST request.
curl_setopt($ch, CURLOPT_POST, 1);

//Attach our encoded JSON string to the POST fields.
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);

//Set the content type to application/json
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); 

//Set the compression type to gzip 
curl_setopt($ch,CURLOPT_ENCODING , "gzip");


//Execute the request
$result = curl_exec($ch);

//close connection
curl_close($ch);

echo $result;
?>

Το response Που παίρνω είναι το παρακάτω.

Αναφορά σε κείμενο

{"success": true, "clientID":"9J8pHKvuKqrCQ69N9JL4HNLNLK5JH6mbDKD3Ld9HLKnsL75CILLaLsLqSqLbUMPGKbLKNrfLPLybDqH0KazPPLLNLaL7LK9vHG", "objs":[{"COMPANY" : "1000","COMPANYNAME" : "������� Demo ��","BRANCH" : "1000","BRANCHNAME" : "����� - ����","MODULE" : "13","MODULENAME" : "�������","REFID" : "47","REFIDNAME" : "����������� AE","USERID" : "1","FINALDATE" : "","ROLES" : "","XSECURITY" : "0","EXPTIME" : ""}], "ver":"5.00.520.11321", "sn":"01100313514211", "off":false, "pin":false, "appid":"256"}1

Κάποια πεδία όπως βλέπετε γυρνάνε σε binary mode.Ξέρει κανείς για ποιόν λόγο επιστρέφουν έτσι ;;

 

Επεξ/σία από eleionos
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Αρχικά, θα μπορούσα να σου προτείνω να χρησιμοποιήσεις τις συναρτήσεις του WordPress για το curl, δηλαδή το wp_remote_post & το wp_remote_get για να κάνεις τις κλήσεις που θες.

Στα άλλα, μήπως φταίει το encoding για το πρόβλημα που έχεις; Μήπως να ορίσεις κάποιο encoding για να το δοκιμάσεις.

Στο curl θα το έγραφες κάπως έτσι:

curl_setopt($ch,CURLOPT_ENCODING , "utf-8");

στο wp_remote_get ή στο wp_remote_post θα το έγραφες έτσι:

$data = wp_remote_post($url, array(
    'headers'     => array('Content-Type' => 'application/json; charset=utf-8'),
    'body'        => json_encode($array_with_parameters),
    'method'      => 'POST',
    'data_format' => 'body',
));

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)
2 ώρες πριν, dichagr είπε

Αρχικά, θα μπορούσα να σου προτείνω να χρησιμοποιήσεις τις συναρτήσεις του WordPress για το curl, δηλαδή το wp_remote_post & το wp_remote_get για να κάνεις τις κλήσεις που θες.

Στα άλλα, μήπως φταίει το encoding για το πρόβλημα που έχεις; Μήπως να ορίσεις κάποιο encoding για να το δοκιμάσεις.

Στο curl θα το έγραφες κάπως έτσι:

curl_setopt($ch,CURLOPT_ENCODING , "utf-8");

στο wp_remote_get ή στο wp_remote_post θα το έγραφες έτσι:


$data = wp_remote_post($url, array(
    'headers'     => array('Content-Type' => 'application/json; charset=utf-8'),
    'body'        => json_encode($array_with_parameters),
    'method'      => 'POST',
    'data_format' => 'body',
));

Καλήμερα  Dimitris Hatimichalis 

O κώδικας που χρησιμοποίησα σύμφωνα με τα παραπάνω είναι ο παρακάτω 

<?php
 
$data = array(
 'service' => 'login',    
 'username' => 'demo',
 'password' => 'demo',
 'appid' =>  '56',
 'method'  => 'POST',
  'data_format' => 'body'
);

$url = 'myurl';
 
$response = wp_remote_post( $url, array(
  'method' => 'POST',
  'headers' => array('Content-Type' => 'application/json; charset=utf-8'),
  'body' => json_encode($data))
);
if ( is_wp_error( $response ) ) {
       $error_message = $response->get_error_message();
       echo "Something went wrong: $error_message";
    } else {
       print_r( $response );
    }

?>

To response μου δίνει τα ίδια 

 [body] => {"success": true, "clientID":"9J8p9JL2TLHZI6SbDKD1Gs5fHLHFOL5FQ4HmL59HLKnwR59D9JT6GKLISa1nId0bDZ1LNrLLP55HILHLG4XNG59PTL4bDqLrHLHqLKK", "objs":[{"COMPANY" : "1000","COMPANYNAME" : "������� Demo ��","BRANCH" : "1000","BRANCHNAME" : "����� - ����","MODULE" : "13","MODULENAME" : "�������","REFID" : "47","REFIDNAME" : "����������� AE","USERID" : "1","FINALDATE" : "","ROLES" : "","XSECURITY" : "0","EXPTIME" : ""}], "ver":"5.00.520.11321", "sn":"01100313514211", "off":false, "pin":false, "appid":"56"}

 

Επεξ/σία από eleionos
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Στις 14/6/2020 στις 10:15 ΠΜ, dichagr είπε

Αρχικά, θα μπορούσα να σου προτείνω να χρησιμοποιήσεις τις συναρτήσεις του WordPress για το curl, δηλαδή το wp_remote_post & το wp_remote_get για να κάνεις τις κλήσεις που θες.

Στα άλλα, μήπως φταίει το encoding για το πρόβλημα που έχεις; Μήπως να ορίσεις κάποιο encoding για να το δοκιμάσεις.

Στο curl θα το έγραφες κάπως έτσι:

curl_setopt($ch,CURLOPT_ENCODING , "utf-8");

στο wp_remote_get ή στο wp_remote_post θα το έγραφες έτσι:


$data = wp_remote_post($url, array(
    'headers'     => array('Content-Type' => 'application/json; charset=utf-8'),
    'body'        => json_encode($array_with_parameters),
    'method'      => 'POST',
    'data_format' => 'body',
));

με αυτήν γραμμή κώδικα λύθηκε το θέμα  τελικά . header('Content-Type: application/json; charset=windows-1253');

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...