簡體   English   中英

cURL 從 API 獲取 XML 響應不起作用

[英]cURL to get XML response from an API not working

當我直接在瀏覽器中嘗試 API 端點的 url 時,它可以工作並返回 XML 數據,但是當我嘗試使用 cURL 時,它返回01 - Unavailable service錯誤,所以問題一定出在我的 cURL 代碼上。

PHP:

$url = "https://ws.fr.shopping.rakuten.com/stock_ws";

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

$headers = array(
    "Accept: application/xml",
    "action: export",
    "login: mylogin",
    "pwd: mytokenxxx",
    "version: 2018-06-29"
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

$resp = curl_exec($curl);
curl_close($curl);
var_dump($resp);

有效並返回 XML 數據的直接 URL:

https://ws.fr.shopping.rakuten.com/stock_ws?action=export&login=mylogin&pwd=mytokenxxx&version=2018-06-29

您需要在調用curl_init之前使用查詢字符串創建 url,而不是嘗試在標頭中發送 url 參數(如 @CBroe 之前所述)

$url = "https://ws.fr.shopping.rakuten.com/stock_ws";
$headers = array(
    "Accept: application/xml"
);
$args=array(
    "action"=>"export",
    "login"=>"mylogin",
    "pwd"=>"mytokenxxx",
    "version"=>"2018-06-29"
);
$url=sprintf('%s?%s',$url,http_build_query( $args ));

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
$resp = curl_exec($curl);
curl_close($curl);

var_dump($resp);

然后不出所料地產生:

string(584) " Sender InvalidUserConnection Unknown user or password.
Details

暫無
暫無

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

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