2016-05-29 3 views
1

hotelbeds apiКак я могу использовать пост запрос в библиотеке pecl_http

АНИ, необходимые для использования запроса после некоторых областях, но я не знаю, где поля будут добавлены !! (В запросе GET я добавить поля в URL, как любой запрос)

код апи

`

$apiKey = "8z8a7tupn5hubhjxqh8ubuz7"; 
$sharedSecret = "jsSJq2msbU"; 
$signature = hash("sha256", $apiKey.$sharedSecret.time()); 

$endpoint = "https://api.test.hotelbeds.com/activity-api/3.0/activities"; 

$request = new \http\Client\Request("POST", 
    $endpoint, 
    [ "Api-Key"  => $apiKey, 
    "X-Signature" => $signature, 
    "Accept"  => "application/json" , 
    ]); 


$client = new \http\Client; 

$client->enqueue($request)->send(); 

$response = $client->getResponse(); 

    echo "<pre>"; 
    print_r($response->getBody()); 
    echo "</pre>"; 

API-интерфейс сказал

Доступные фильтры для поиска перечислено ниже.

Он содержит массив фильтра со следующей структурой:

[{ "searchFilterItems": [{ "типа": "адресат", "значение": "Барселона"}]}]

Объект «searchFilterItems» содержит следующие атрибуты: type> и value.

Приведенные ниже примеры иллюстрируют различные типы и значения для> каждого фильтра:

Страна

{ "типа": "страна", "значение": "СТ"}

ответ

2

У меня была такая же проблема, мне потребовалось немного времени, чтобы понять это. Оказывается, вам нужно использовать класс Body для представления данных post.

$msg = new http\Message\Body(); 
$msg->addForm([ 
    'field1' => 'value', 
    'field2' => 'value2' 
]); 

$headers = null; 

$request = new http\Client\Request('POST', 'https://example.com', $headers, $msg); 

$client = new http\Client(); 
$client->enqueue($request); 
$client->send(); 

$response = $client->getResponse(); 

Есть еще несколько методов, доступных в Message и Body класса для включая файлы и т.д.

1

Попробуйте этот путь

$request = new http\Client\Request; 
      $body = new http\Message\Body; 
      $body->append('{Your JSON}'); 
      $request->setRequestUrl('https://api.hotelbeds.com/hotel-api/1.0 hotels'); 
      $request->setRequestMethod('POST'); 
      $request->setBody($body); 
      $request->setHeaders(array(
       'Accept'      => 'application/json', 
       'Content-Type'   => 'application/json', 
       'Api-Key'    => $owapiKey, 
       'X-Signature'    => $signature, 
       //'Accept-Encoding' => 'Gzip', //Deflate 
       'cache-control'  => 'no-cache' 
      )); 

      try { 
       $client = new http\Client; 
       $client->enqueue($request)->send(); 
       $response = $client->getResponse(); 

       if ($response->getResponseCode() != 200) { 
       echo("HTTP CONNECT FAILURE: -> ". 
       $response->getTransferInfo("effective_url"). 
       $response->getInfo().$response->getResponseCode()); 
      } else { 
          $res=$response->getBody()->toString(); 
         }    

      } catch (Exception $ex) { echo("Error while sending request, reason: %s\n".$ex->getMessage()); }