file_get_contents抛出 400 个错误请求错误 PHP

2022-08-30 14:54:58

我只是使用a来获取用户的最新推文,如下所示:file_get_contents()

$tweet = json_decode(file_get_contents('http://api.twitter.com/1/statuses/user_timeline/User.json'));

这在我的本地主机上工作正常,但是当我将其上传到我的服务器时,它会抛出以下错误:

警告:file_get_contents(http://api.twitter.com/1/statuses/user_timeline/User.json) [function.file-get-contents]:无法打开流:HTTP 请求失败!HTTP/1.0 400 错误请求...

不确定可能导致它的原因,也许是我需要在服务器上设置的php配置?

提前致谢!


答案 1

您可能希望尝试使用 curl 来检索数据,而不是file_get_contents。curl 对错误处理有更好的支持:

// make request
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://api.twitter.com/1/statuses/user_timeline/User.json"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
$output = curl_exec($ch);   

// convert response
$output = json_decode($output);

// handle error; error output
if(curl_getinfo($ch, CURLINFO_HTTP_CODE) !== 200) {

  var_dump($output);
}

curl_close($ch);

这可能会让您更好地了解为什么会收到错误。一个常见的错误是达到服务器上的速率限制。


答案 2

您可以使用将选项集添加到 ,这样,您将在发生错误时获得响应的整个正文(例如HTTP / 1.1 400),而不仅仅是简单的。file_get_contentsignore_errorstruefalse

您可以在此处看到一个示例:https://stackoverflow.com/a/11479968/3926617

如果要访问响应的标头,可以在请求后使用。$http_response_header

http://php.net/manual/en/reserved.variables.httpresponseheader.php


推荐