Я знаю ещё пару умных аббревиатур, но в этой заметке мы объединим только 4: JSON, POST, PHP и cURL.
Задача
При парсинге данных с одного ресурса в Сети возникла необходимость отправки запроса в формате JSON методом POST. Проект написан на PHP и использует библиотеку cURL. Так в голову пришла идея заставить всё это работать вместе.
Решение
Решение простое, но явно не описано в документации PHP. Нужно выполнить условия:
Поставленная задача решена.
PS. Про тоже на английском читать здесь.
Задача
При парсинге данных с одного ресурса в Сети возникла необходимость отправки запроса в формате JSON методом POST. Проект написан на PHP и использует библиотеку cURL. Так в голову пришла идея заставить всё это работать вместе.
Решение
Решение простое, но явно не описано в документации PHP. Нужно выполнить условия:
- сформировать правильный запрос в формате JSON;
- сообщить серверу, что отсылаем ему JSON запрос, установив заголовок
Content-Type: application/json;
- сообщить cURL, что в запросе POST отправляем не стандартно сформированные данные (key1=value1&key2=value2&...), а JSON.
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
//Формируем JSON
$request_data = array('type' => 'reqColor', 'value' => '#aa00cc');
$json = json_encode($request_data);
//Настраиваем cURL
$ch = curl_init('http://sample.com/data.php');
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $json);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
//Получаем данные
$response = curl_exec($ch);
РезультатПоставленная задача решена.
PS. Про тоже на английском читать здесь.
Спасибо вам.
ОтветитьУдалитьСтолько сил потратил чтобы найти как отправить правильно...
Спасибо Вам огромное! Работает! Целый интернет за 2 часа перерыл в поиске нужной информации. ТОЛЬКО У ВАС ОН ЗАРАБОТАЛ! СПАСИБО!
ОтветитьУдалитьСпасибо!Работает)
ОтветитьУдалить