Параметры HTTP_Request2 POST игнорируются?

Запрос с curl, вроде этого, работает нормально:

curl -XPOST -H "Content-Type: application/json" -d '{"query":"porges","start":0,"rows":10,"lang":"ENGLISH"}' http://localhost:8080/services/rest/index/z56508/search/field/search

В моем случае я получил 11 хитов там. Однако, когда я пытаюсь перевести это в HTTP_Request2, вызов возвращает все попадания в базу данных.

Я смотрел на Http_Request2 POST-запрос не работает написать код здесь:

    require_once 'HTTP/Request2.php';
$url = "http://localhost:8080/services/rest/index/z56508/search/field/search";
$data = array("query"=>"porges","start"=>"0","rows"=>"10","lang"=>"ENGLISH");

$r = new HTTP_Request2($url);
$r->setHeader('Content-Type', 'application/json;charset=UTF-8');
$r->setMethod(HTTP_Request2::METHOD_POST)
->addPostParameter($data);
$response = $r->send();
$body = $response->getBody();
echo $body;

Что я делаю неправильно? Это похоже на "query" => "porges" игнорируется, но почему?

2

Решение

Прочитайте дружественное руководство: http://pear.php.net/manual/en/package.http.http-request2.request.php#package.http.http-request2.request.body

addPostParameter() следует использовать, когда вы хотите сгенерировать тело запроса POST в соответствии с application/x-www-form-urlencoded или же multipart/form-data Правила Content-Type (подсказка: это не JSON, который вы пытаетесь отправить). Если у вас есть готовое тело запроса, используйте setBody():

$request->setBody('{"query":"porges","start":0,"rows":10,"lang":"ENGLISH"}');
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]