酒店API HTTP错误



在下面我附加了我的API请求

$apiKey = "XXXX";
$Secret = "XXX";
$endpoint = "https://api.test.hotelbeds.com/hotel-api/1.0/hotels";
$request = new httpClientRequest("POST",
$endpoint,
[ "Api-Key"     => $apiKey,
  "X-Signature" => $signature,
  "Accept"      => "application/xml" ]);
try
{  $client = new httpClient;
$client->enqueue($request)->send();
 $response = $client->getResponse();
if ($response->getResponseCode() != 200) {  
   printf("%s returned '%s' (%d)n",
       $response->getTransferInfo("effective_url"),
       $response->getInfo(),
       $response->getResponseCode()
   );
} else {
  printf($response->getBody());
}
} catch (Exception $ex) {
printf("Error while sending request, reason: %sn",$ex->getMessage());
}'

遵循以下错误

未被发现的错误:

中找不到类'HTTP client request'

您需要添加使用语句。

use httpClientRequest;
$request = new Request(blah blah);

当然,我认为您正在使用Composer AutoLoader。如果没有,您还需要require_once()文件。

您可以尝试使用curl代替pecl_http。这是一个示例:

<?php
// Your API Key and secret
$apiKey = "yourApiKey";
$Secret = "yourSecret";
// Signature is generated by SHA256 (Api-Key + Secret + Timestamp (in seconds))
$signature = hash("sha256", $apiKey.$Secret.time());
$endpoint = "https://api.test.hotelbeds.com/hotel-api/1.0/status";
echo "Your API Key is: " . $apiKey . "<br>";
echo "Your X-Signature is: " . $signature . "<br><br>";
// Example of call to the API
try
{
    // Get cURL resource
    $curl = curl_init();
    // Set some options - we are passing in a useragent too here
    curl_setopt_array($curl, array(
        CURLOPT_RETURNTRANSFER => 1,
        CURLOPT_URL => $endpoint,
        CURLOPT_HTTPHEADER => ['Accept:application/json' , 'Api-key:'.$apiKey.'', 'X-Signature:'.$signature.'']
    ));
    // Send the request & save response to $resp
    $resp = curl_exec($curl);
    // Check HTTP status code
    if (!curl_errno($curl)) {
      switch ($http_code = curl_getinfo($curl, CURLINFO_HTTP_CODE)) {
        case 200:  # OK
          echo "Server JSON Response:<br>" . $resp;
          break;
        default:
          echo 'Unexpected HTTP code: ', $http_code, "n";
          echo $resp;
      }
    }
    // Close request to clear up some resources
    curl_close($curl);

} catch (Exception $ex) {
    printf("Error while sending request, reason: %sn",$ex->getMessage());
}
?>

只需确保首先您的输入; extension = php_curl.dll 在您的php.ini文件中并重新启动服务器即可。我们计划在开发人员门户网站上更新我们的示例,因为有些已经过时或没有充分记录。

相关内容

最新更新