Twitter API - 406 Неприемлемый ответ - PullRequest
0 голосов
/ 21 января 2011

Для профиля пользователя я запрашиваю API поиска в Twitter через:

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

, который работал отлично в последние недели.

Через несколько дней API Twitter получает много запросов от моего сайта, а иногда и отвечает "406 Not Acceptable"

полное сообщение об ошибке:

array (18) {[0] => string (27) "HTTP / 1.1 406 Недопустимо" [1] => string (35) "Дата: пт, 21 января 2011 12:31:06 GMT" [ 2] => string (10) "Сервер: привет" [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, необходимо переоценить, max-age = 300 "[9] => string (38)" Истекает: пятница, 21 января 2011 12:36:06 GMT "[10] => string (21)" Vary: Accept-Encoding "[11] => string ( 17) "Длина содержимого: 1" [12] => string (21) "X-Varnish: 1897557299" [13] => string (6) "Age: 0" [14] => string (16) "Via : 1.1 лак "[15] => string (45)" X-Cache-Svr: slc1-acm-32-sr1.prod.twitter.com "[16] => string (13)" X-Cache: MISS " [17] => string (17) "Соединение: закрыть"}

Я не понимаю в «Доку Твиттере» об этом:

http://apiwiki.twitter.com/w/page/22554652/HTTP-Response-Codes-and-Errors говорит: «406 Недопустимо: возвращается API поиска, если в запросе указан неверный формат».

потому что, когда я повторяюсь через несколько секунд, запрос снова работает нормально.

У кого есть идеи как это исправить?

Ответы [ 3 ]

2 голосов
/ 21 января 2011

Причина:
Из документов поддерживаются следующие форматы:

1) json
2) atom

И вы используете 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 голос
/ 21 января 2011

Twitter API возвращает целую серию из 400 и 500 ошибок случайным образом и на низком уровне.Как правило, точный код ошибки не имеет смысла, так как он меняется.Из моего опыта ложная ошибка происходит примерно в 0,1% случаев, когда вы делаете запрос.Единственное решение - повторить запрос.

Если ошибка воспроизводимая, проверьте свой код.Если ошибка является случайной и прерывистой, напишите код, который повторяет запрос при возникновении ошибки.

0 голосов
/ 21 января 2011

Если он перегружен, это может быть причиной ошибки.

Что содержит слово «плохое слово»? Если это переменная, она может содержать что-то, что закодировано неправильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...