php curl 400 bad request怎么解决,关于json:file_get_contents抛出400 Bad Request错误PHP

当在本地运行成功但在服务器上遇到400 Bad Request错误时,可以尝试使用cURL替换file_get_contents。cURL提供更好的错误处理,有助于诊断如速率限制等可能的问题。通过打印响应的HTTP状态码和使用curl_error(),可以获取更详细的错误信息。
摘要由CSDN通过智能技术生成

我只是使用file_get_contents()来获取来自这样的用户的最新推文:

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

这在我的localhost上工作正常但是当我将它上传到我的服务器时它会抛出此错误:

Warning: file_get_contents(http://api.twitter.com/1/statuses/user_timeline/User.json) [function.file-get-contents]:failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request...

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

提前致谢!

阅读本文:stackoverflow.com/questions/697472/

请参阅[此堆栈问题] [1],因为它可能会回答您的问题。 [1]:stackoverflow.com/questions/3710147/

谢谢彼得布鲁克斯! 那很有效!

您可能希望尝试使用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);

这可能会让您更好地了解收到错误的原因。 常见错误是达到服务器的速率限制。

您应该打印curl_error($ch)以获得更详细的错误。

您可以使用file_get_contents将ignore_errors选项添加到true,这样您就可以在出现错误时获取整个响应(例如,HTTP / 1.1 400),而不仅仅是一个简单的false。

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

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

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

关于本的回答只是一个小补遗。

根据PHP手册,可以在使用curl_init()对cURL句柄进行初始化时设置CURLOPT_URL选项。

// make request

$ch = curl_init("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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值