Вот мой код,
$url = 'url_to_post';
$data = array(
"first_name" => "First name",
"last_name" => "last name",
"email"=>"email@gmail.com",
"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);
А на другой странице я получаю данные сообщения.
print_r ($_POST);
Выход
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 ( )
Итак, я не получаю правильных данных даже на моем собственном сервере, это пустой массив. Я хочу реализовать REST с использованием json как http://docs.shopify.com/api/customer#create
$data
на$data_string
использованиеjson_encode()
??? Не вижу эту строку кода ...code
$ data_string = json_encode ($ data);code
а как писать код в комментариях? в комментариях я не могу писать разрыв строки и как писать код?Ответы:
Вы неправильно отправляете json-файл, но даже если бы он был правильным, вы не смогли бы протестировать использование
print_r($_POST)
( читайте здесь почему ). Вместо этого на второй странице вы можете заблокировать входящий запрос с помощьюfile_get_contents("php://input")
, который будет содержать POSTed json . Чтобы просмотреть полученные данные в более удобочитаемом формате, попробуйте следующее:В вашем коде вы указываете
Content-Type:application/json
, но вы не кодируете json все данные POST - только значение поля POST "customer". Вместо этого сделайте что-нибудь вроде этого:Заметка: вам может быть полезно использовать стороннюю библиотеку вместо непосредственного взаимодействия с Shopify API.
источник
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type:application/json', 'Accept:application/json'));
(в противном случае вы можете отправить JSON, но получить XML в качестве ответа).Этот код работал у меня. Можешь попробовать...
источник
замещать
с участием:
Я не понимаю, что вы имели в виду под «другой страницей», я надеюсь, что это страница по адресу: 'url_to_post'. Если эта страница написана на PHP, JSON, который вы только что разместили выше, будет прочитан следующим образом:
источник
Пожалуйста, попробуйте этот код: -
источник
Попробуйте этот пример.
Ваш код page2.php
источник
Попробуйте вот так:
Главное, что вы забыли, - это json_encode для ваших данных. Но вам также может быть удобно использовать curl_setopt_array для одновременной установки всех параметров curl, передавая массив.
источник
array(..)
в `CURLOPT_POSTFIELDSarray(..)
CURLOPT_POSTFIELDS` также приведет к URL-кодированию JSON.