簡體   English   中英

使用cURL調用PHP中的API

[英]Use cURL to call API in PHP

我有以下代碼,但是,它不返回任何內容-空白頁。 但是,如果我插入正確的參數並將整個鏈接放在Web瀏覽器上,它將返回我想要的結果。 我不想使用file_get_contents,因為我需要將此函數用於其他API調用,這些API不能通過在地址欄上輸入整個鏈接來返回結果。 感謝您的幫助。

<?php
$data_string ='<HotelListRequest><hotelId>A HOTEL</hotelId></HotelListRequest>';

// Tell CURL the URL of the recipient script
$curl_handle = curl_init ();
curl_setopt ($curl_handle, CURLOPT_URL, 'http://api.ean.com/ean-services/rs/hotel/v3/info?minorRev=4&cid=MYID&apiKey=MYAPIKEY&customerSessionId=&locale=en_US&currencyCode=USD&xml=');

// This section sets various options. See http://www.php.net/manual/en/function.curl-setopt.php
curl_setopt ($curl_handle, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($curl_handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($curl_handle, CURLOPT_POST, true);
curl_setopt ($curl_handle, CURLOPT_POSTFIELDS, $data_string);

// Perform the POST and get the data returned by the server.
$result = curl_exec ($curl_handle);
// Close the CURL handle
curl_close ($curl_handle);
echo $result; 
?>

如果將所有內容都放入瀏覽器並且可以正常工作,則說明您正在使用GET數據。 該服務是否支持POST數據的使用(在示例中就是發送的數據)? 您是否嘗試過通過CURLOPT_URL發送所有數據?

另外,您需要將數據字符串更改為

"xml=".$data_string

可能還有其他參數(取決於API)。

根據http://php.net/manual/en/function.curl-setopt.php

要在HTTP“ POST”操作中發布的完整數據。 要發布文件,請在文件名前添加@並使用完整路徑。 可以通過在文件名后跟隨類型'; type = mimetype'的類型來明確指定文件類型。 此參數可以作為urlencoded字符串(如“ para1 = val1&para2 = val2&...”)傳遞,也可以作為字段名稱為鍵且字段數據為值的數組傳遞。 如果value是一個數組,則Content-Type標頭將設置為multipart / form-data。 從PHP 5.2.0開始,如果使用@前綴將文件傳遞給此選項,則value必須是一個數組。

因此,您應該修改$ data_string變量內容以匹配所需的格式。

暫無
暫無

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

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