[英]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.