Ini kode saya,
$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);
Dan di halaman lain, saya mengambil data posting.
print_r ($_POST);
Output adalah
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 ( )
Jadi, saya tidak mendapatkan data yang tepat bahkan di server saya sendiri, ini adalah array kosong. Saya ingin menerapkan REST menggunakan json di http://docs.shopify.com/api/customer#create
$data
untuk$data_string
menggunakanjson_encode()
??? Jangan melihat baris kode ini ...code
$ data_string = json_encode ($ data);code
dan bagaimana menulis kode dalam komentar? dalam komentar saya tidak dapat menulis jeda baris dan jadi bagaimana menulis kode?Jawaban:
Anda POSTINGAN json salah - tetapi bahkan jika itu benar, Anda tidak akan dapat menguji menggunakan
print_r($_POST)
( baca mengapa di sini ). Sebaliknya, pada halaman kedua Anda, Anda dapat menangkap permintaan masuk menggunakanfile_get_contents("php://input")
, yang akan berisi json POSTed . Untuk melihat data yang diterima dalam format yang lebih mudah dibaca, coba ini:Dalam kode Anda, Anda menunjukkan
Content-Type:application/json
, tetapi Anda tidak mengkode semua data POST json - hanya nilai dari bidang POST "pelanggan". Sebagai gantinya, lakukan sesuatu seperti ini:Sidenote: Anda mungkin mendapat manfaat dari menggunakan perpustakaan pihak ketiga daripada berinteraksi langsung dengan API Shopify secara langsung.
sumber
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type:application/json', 'Accept:application/json'));
(jika tidak, Anda dapat mengirim JSON, tetapi dapatkan XML sebagai jawaban).Kode ini bekerja untuk saya. Anda dapat mencoba...
sumber
Menggantikan
dengan:
Saya tidak mengerti apa yang Anda maksud dengan "halaman lain", saya harap ini adalah halaman di: 'url_to_post'. Jika halaman itu ditulis dalam PHP, JSON yang baru saja Anda posting di atas akan dibaca dengan cara di bawah ini:
sumber
Silakan coba kode ini: -
sumber
Coba contoh ini.
Kode page2.php Anda
sumber
Coba seperti ini:
Kuncinya adalah Anda lupa json_encode data Anda. Tetapi Anda juga mungkin merasa nyaman menggunakan curl_setopt_array untuk mengatur semua opsi curl sekaligus dengan melewatkan array.
sumber
array(..)
dalam `CURLOPT_POSTFIELDSarray(..)
ke CURLOPT_POSTFIELDS` akan urlencode JSON juga.