2014-12-07 1 views
2

Запрос с завитком, как это, работает отлично:HTTP_Request2 Параметры POST игнорируются?

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 request not working писать код здесь:

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"}');