API集成PHP Curl

4

我正在尝试集成一个API,在API集成说明中,显示如下:

GET /offers.json or /offers.xml
Headers: API-KEY={your_key}, API-LOGIN={your_login}

CURL示例:

curl https://api.thewebsite.com/v1/offers.json -H 'API-KEY:
1a2b3c4d5e6f7g8h9i' -H 'API-LOGIN: 1a2b3c4d5e6f7g8h9i'

我尝试使用以下 cURL 代码,但没有成功。对于 GET 方法,我不确定如何将 API KEY 和 API LOGIN 作为头信息传递。
$header = array('Content-Type: application/xml', 'API-KEY=1a2b3c4d5e6f7g8h9i', 'API-LOGIN=1a2b3c4d5e6f7g8h9i');
$url = "https://api.thewebsite.com/v1/offers.xml";

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
$xml = curl_exec($curl);
curl_close($curl);

print $xml;

1
当您执行该curl脚本时会发生什么? - Nathan Taylor
我一直收到一个无效的API密钥错误,这可能是由于使用=而不是:,正如Kaivosukeltaja指出的那样。 - spiderling
3个回答

5

HTTP头需要使用冒号作为键和值之间的分隔符,而不是等号。请尝试以下内容:

$header = array('Content-Type: application/xml', 'API-KEY: 1a2b3c4d5e6f7g8h9i', 'API-LOGIN: 1a2b3c4d5e6f7g8h9i');

我之前使用了“=”尝试其他操作,然后忘记改回来了。谢谢! - spiderling
我一直在尝试只打印返回的第一个报价的详细信息。但是整个XML都被显示出来了。即使我删除了所有的打印调用。 `## 开始剪辑 ## <?xml version="1.0" encoding="UTF-8"?> <offers type="array"> <offer> <end-date type="datetime">2011-09-22T23:59:59Z</end-date> <details>这里是第一个报价的详细信息</details> <faq nil="true"></faq> <value type="float">495.0</value>

结束剪辑

print $xml->offer[0]->details`
- spiderling

0

您可以从 curl 中获取一些调试信息,了解到具体哪里出现了问题:

print "<pre>\n";
print_r(curl_getinfo($curl));  // get error info
echo "\n\ncURL error number:" .curl_errno($curl); // print error info
echo "\n\ncURL error:" . curl_error($ch); 
print "</pre>\n";
curl_close($curl); // close curl session

确保在关闭和终止CURL对象之前调用它。

谢谢。我会将它保存在未来方便使用。 - spiderling

0

请尝试以下方法 -

print "<pre>\n";
print_r(curl_getinfo($curl));  // get error info
echo "\n\ncURL error number:" .curl_errno($curl); // print error info
echo "\n\ncURL error:" . curl_error($ch); 
print "</pre>\n";
curl_close($curl); 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接