Voici mon code,
$url = 'url_to_post';
$data = array(
"first_name" => "First name",
"last_name" => "last name",
"email"=>"[email protected]",
"addresses" => array (
"address1" => "some address",
"city" => "city",
"country" => "CA",
"first_name" => "Mother",
"last_name" => "Lastnameson",
"phone" => "555-1212",
"province" => "ON",
"zip" => "123 ABC"
)
);
$data_string = json_encode($data);
$ch=curl_init($url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, array("customer"=>$data_string));
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER,
array(
'Content-Type:application/json',
'Content-Length: ' . strlen($data_string)
)
);
$result = curl_exec($ch);
curl_close($ch);
Et sur une autre page, je récupère les données de publication.
print_r ($_POST);
La sortie est
HTTP/1.1 200 OK
Date: Mon, 18 Jun 2012 07:58:11 GMT
Server: Apache
X-Powered-By: PHP/5.3.6
Vary: Accept-Encoding
Connection: close
Content-Type: text/html
Array ( )
Donc, je n'obtiens pas les données appropriées même sur mon propre serveur, c'est un tableau vide. Je souhaite implémenter REST en utilisant json comme à http://docs.shopify.com/api/customer#create
$data
en$data_string
utilisantjson_encode()
??? Ne voyez pas cette ligne de code ...code
$ data_string = json_encode ($ data);code
et comment écrire du code dans les commentaires? dans les commentaires je ne peux pas écrire de saut de ligne et donc comment écrire du code?Réponses:
Vous postez incorrectement le json - mais même s'il était correct, vous ne pourrez pas tester en utilisant
print_r($_POST)
( lisez pourquoi ici ). Au lieu de cela, sur votre deuxième page, vous pouvez attraper la requête entrante en utilisantfile_get_contents("php://input")
, qui contiendra le json POSTed . Pour afficher les données reçues dans un format plus lisible, essayez ceci:Dans votre code, vous indiquez
Content-Type:application/json
, mais vous n'encodez pas json toutes les données POST - uniquement la valeur du champ POST "client". À la place, faites quelque chose comme ceci:Note de bas de page: Vous pourriez bénéficier de l'utilisation d' une bibliothèque tierce au lieu de vous connecter directement avec l'API Shopify.
la source
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type:application/json', 'Accept:application/json'));
(sinon, vous pouvez envoyer JSON, mais obtenir XML comme réponse).Ce code a fonctionné pour moi. Tu peux essayer...
la source
Remplacer
avec:
Je ne comprends pas ce que vous entendez par "autre page", j'espère que c'est la page à: 'url_to_post'. Si cette page est écrite en PHP, le JSON que vous venez de publier ci-dessus sera lu de la manière ci-dessous:
la source
Veuillez essayer ce code: -
la source
Essayez cet exemple.
Votre code page2.php
la source
Essayez comme ceci:
La chose clé que vous avez oublié était de json_encode vos données. Mais vous pouvez également trouver pratique d'utiliser curl_setopt_array pour définir toutes les options curl en même temps en passant un tableau.
la source
array(..)
dans `CURLOPT_POSTFIELDSarray(..)
à CURLOPT_POSTFIELDS` codera également le JSON.