对于用户个人资料,我通过以下方式查询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会返回。”
因为,当我在几秒钟后重试时,请求再次正常工作。
谁知道如何解决这个问题?
答案 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'包含什么?如果它是变量,则可能包含错误编码的内容。