Twitter API - 406不可接受的响应

时间:2011-01-21 12:49:38

标签: php api twitter

对于用户个人资料,我通过以下方式查询Twitter Search API:

curl_setopt($ch, CURLOPT_URL, "http://search.twitter.com/search.rss?q=".urlencode($username."+-badword")."");

在过去的几周里表现非常出色。

几天后,Twitter API从我的网站收到大量请求,有时会回复“406 Not Acceptable”

完整的错误消息是:

  

array(18){[0] => string(27)“HTTP / 1.1 406 Not Acceptable”[1] => string(35)“日期:星期五,2011年1月21日12:31:06 GMT”[2] => string(10)“Server:hi”[3] => string(26)“状态:406不可接受”[4] => string(15)“Retry-After:10”[5] => string(30)“X-Served-From:slc1-aah-25-sr1”[6] => string(38)“Content-Type:text / html; charset = utf-8”[7] => string(45)“X-Served-By:slc1-acm-32-sr1.prod.twitter.com”[8] => string(55)“Cache-Control:max-age = 15,must-revalidate,max-age = 300”[9] => string(38)“Expires:Fri,2011年1月21日12:36:06 GMT”[10] => string(21)“Vary:Accept-Encoding”[11] => string(17)“Content-Length:1”[12] => string(21)“X-Varnish:1897557299”[13] => string(6)“年龄:0”[14] => string(16)“Via:1.1 varnish”[15] => string(45)“X-Cache-Svr:slc1-acm-32-sr1.prod.twitter.com”[16] => string(13)“X-Cache:MISS”[17] => string(17)“Connection:close”}

我不明白Twitter Doku:

  

http://apiwiki.twitter.com/w/page/22554652/HTTP-Response-Codes-and-Errors说“406不可接受:当请求中指定的格式无效时,Search API会返回。”

因为,当我在几秒钟后重试时,请求再次正常工作。

谁知道如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

<强>原因:
From the docs ,支持的格式为:

1)json
2)原子

你正在使用rss。这就是你收到错误的原因。必须将格式指定为扩展名。像这样:

http://search.twitter.com/search.format

<强>解决方案:
使用atom或json格式,如下所示:

http://search.twitter.com/search.json?q=twitter

完整代码应如下所示:

curl_setopt($ch, CURLOPT_URL, "http://search.twitter.com/search.json?q=".urlencode($username."+-badword")."");

答案 1 :(得分:1)

Twitter API会随机返回一系列400和500错误的错误。通常,确切的错误代码是没有意义的,因为它是变化的。根据我的经验,当您提出请求时,大约0.1%的时间会发生错误错误。唯一的解决方案是重复请求。

如果错误可重现,请检查您的代码。如果错误是随机和间歇性的,则编写在发生错误时重复请求的代码。

答案 2 :(得分:0)

如果它超载,那可能是错误的原因。

'badword'包含什么?如果它是变量,则可能包含错误编码的内容。

相关问题