(cURL / PHP) API Response - Использован неверный метод HTTP - PullRequest
0 голосов
/ 16 февраля 2011

Надеюсь, простой вопрос, я попытался подключиться к своему первому REST API с использованием PHP и cURL. Мой код выглядит следующим образом:

<code><?php
$zooplaKey = "mykey";
$postcode = $_GET['postcode'];

$sendData = array('api_key' => $zooplaKey,
                  'postcode' => $postcode,
                  'output_type' => "postcode");

$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_URL, 'http://api.zoopla.co.uk/api/v1/average_area_sold_price.js');
curl_setopt($curl, CURLOPT_POSTFIELDS, $sendData);
//curl_setopt($curl, CURLOPT_POST, true);
//curl_setopt($curl, CURLOPT_HTTPGET, true);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$raw_json = curl_exec($curl);
curl_close($curl);

$zooplaInfo = json_decode($raw_json, true);

echo "<pre>";
print_r($zooplaInfo);
echo "
"; ?>

Запустите точно так же, как указано выше, я получаю возврат:

Массив
(* 1 010 * [error_string] => Использован неверный метод HTTP
[error_code] => 2
)

Uncommenting //curl_setopt($curl, CURLOPT_POST, true); или //curl_setopt($curl, CURLOPT_HTTPGET, true); просто возвращает пустой экран.

Используя следующий URL, я могу получить действительный результат (очевидно, мне пришлось очистить ключ API, поэтому эта ссылка предназначена только для структурных целей)

Спасибо всем.

Ответы [ 2 ]

2 голосов
/ 16 февраля 2011

Согласно документации Zoopla API , вы пытаетесь:

Получить среднюю цену продажи домов в определенном районе.

Извлечение выполняется методом GET в стандарте REST. Используя CURLOPT_POSTFIELDS, cURL автоматически преобразует ваш запрос в POST, который недопустим для поиска. Вы должны удалить часть полей сообщения и сделать это вместо:

curl_setopt($curl, CURLOPT_URL, 'http://full/url?'.http_build_query($sendData));
0 голосов
/ 16 февраля 2011

Параметры в URL передаются как GET.Я бы попытался добавить параметры в CURLOPT_URL вместо того, чтобы помещать их в массив CURLOPT_POSTFIELDS.Удаленный сервис, вероятно, требует, чтобы значения были в строке запроса, а не были отправлены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...