Я пытаюсь отправить JSON в веб-сервис с помощью cURL, используя следующий код:
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_VERBOSE, true);
curl_setopt($ch, CURLOPT_URL, 'http://index.yolink.com/index/define?o=json&ak=APIKEY');
curl_setopt($ch, CURLOPT_HTTPHEADERS,array('Content-Type: application/json'));
$data = array(
'ignore-robots' => 'false',
'language' => 'english',
'crawl-delay' => '0',
'depth' => '3',
'root' => array('url' => 'http://bartleby.com/')
);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
$result=curl_exec($ch);
var_dump($result);
Я получаю в ответ следующее:
string (282) "HTTP / 1.1 200 OK Сервер: Apache-Coyote / 1.1 Access-Control-Allow-Origin: * Тип содержимого: текст / обычный Длина содержимого: 120 Дата: пт, 18 марта 2011 19: 03:23 GMT {"code": "error.indexdefinition.invalid", "message": "Недопустимое содержимое для / define. Ошибка: преждевременный конец файла .. "}"
Я нашел это сообщение в блоге , которое, похоже, связано - похоже, оно отправляет text/plain
, хотя я указал ContentType
в CURLOPT_HTTPHEADERS
как application/json
. Но добавление http_build_query
не помогло.
Заранее спасибо за любую помощь!