【发布时间】:2013-11-12 19:11:11
【问题描述】:
我正在使用我最近注意到的 API 有时会在代码中失败。我通过 file_get_contents 检索它,我收到错误“无法打开流:HTTP 请求失败!”
我直接将 URL 插入浏览器并得到响应,所以我很困惑。我想检查标题,我注意到它出现了 403,我不得不假设这就是它失败的原因?当它不是 403 时,它确实有效。 403 仅在 API 身份验证失败时出现,我有代码来检查返回的 XML 是否表示失败。
所以真正的问题是,我怎样才能取回代码,不管它是否是 403。我打算开始使用 simplexml_load_file,因为无论如何我都要把它加载到 SimpleXML 中,但是如果我可以/应该使用另一种方法,那么这个建议也会很棒。
编辑:我尝试了一个简单的 curl 请求,但除非我做错了,否则它也失败了:
$curlObject = curl_init('https://api.eveonline.com/account/Characters.xml.aspx?userID=8166034&characterID=91242713&apiKey=B174C8B7B4364048B8A44B8C494904059D50B942BB4748FD907FF1DBF3F18282');
curl_setopt($curlObject, CURLOPT_RETURNTRANSFER, 1);
$fileContents = curl_exec($curlObject);
curl_close($curlObject);
echo $fileContents;
【问题讨论】:
-
可以分享网址吗?
-
你问的是如何获取上一次file_get_contents操作的HTTP状态码?是的,
FALSE表示失败,确切的状态码是$http_response_headers(special reserved variable) 的一部分,参见here for an example how to parse it and obtain the status code(通过:stackoverflow.com/q/9724924/367456)。 -
我今天试试,如果成功,请相应标记。
标签: php xml curl simplexml api-eveonline