簡體   English   中英

如何使用 php 使用帶有用戶名和密碼的 API?

[英]How to consume an API with username and password using php?

我正在為一家公司開發一個網站,內部我們正在嘗試開發一個小型預訂系統(我對此有點陌生)。 我使用來自外部 API 的預訂信息,他們也給了我用戶名和密碼……但我無法獲取數據。 我使用cURL方式消費服務,只得到404 url ​​not fund錯誤。 我不確定我是否在代碼中做錯了什么,或者問題直接出在提供者身上。 這是我的代碼:


require_once "credenciales.php";

/* URL DE API's */

$url = 'https://api.hyperguest.com/hg-apitude/hotel-api/1.0/hotels/';
$url0 = 'https://api.hyperguest.com/hg-apitude/hotel-api/1.0/checkrates/';
$url1 = 'https://api.hyperguest.com/hg-apitude/hotel-api/1.0/bookings/';
$url2 = 'https://api.hyperguest.com/hg-apitude/hotel-content-api/1.0/';
$host = 'https://api.hyperguest.com';

$payload = json_encode($my_user);


/* Ingresamos la url de la api o servicio a consumir */
$curl = curl_init($url0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
/* Autorizamos enviar datos */
curl_setopt($curl, CURLOPT_POST, true);

/* convertimos los datos en el formato solicitado normalmente json */
$payload = json_encode($my_user);
curl_setopt($curl, CURLOPT_POSTFIELDS, $payload);

/* Archivo para guardar datos de sesion */
curl_setopt($curl, CURLOPT_COOKIEJAR,  __DIR__ . '/cookies.txt');
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Content-Type:application/json'));

/* Ejecutamos petición */
$result = curl_exec($curl);

$err = curl_error($curl);

curl_close($curl);


if ($err) {
  echo $err;
} else {
  echo $result;
}

答案如下:

{
  "error": {
    "code": "SN.404",
    "message": "Url not found"
  }
}

提前非常感謝您的幫助!

[解決了]

經過大量研究后,我發現了一個程序可以幫助您在使用 API 之前對其進行測試,並且在其文檔中,我可以看到我正確的連接方法是 BEARER 方法,除了我必須請求一個新端點之外能夠擁有一個新的訪問令牌


$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://api.hyperguest.io',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => '',
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 0,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => 'GET',
  CURLOPT_HTTPHEADER => array(
    'Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxx'
  ),
));

$response = curl_exec($curl);

curl_close($curl);

echo $response;

通過這樣做可以稍微簡化此代碼


$url = "https://api.hyperguest.io";

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$headers = array(
   "Accept: application/json",
   "Authorization: Bearer xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);

我希望以后有人會使用此代碼。

感謝所有評論的人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM