Получение HTTP 400 в случайные времена при нажатии URL, чтобы получить последователей / друзей в Твиттере - java - PullRequest
1 голос
/ 14 июля 2010

Я разрабатываю приложение в Твиттере.

И Твиттер дает мне ответ 400 в случайное время.Я в панике.Их серверы слишком плохи, чтобы принимать запросы.Я нажимаю на их REST URL, чтобы получить подписчиков с курсором.Иногда я получаю первые 100 подписчиков, а во время итерации второго курсора я получаю HTTP 400.

Только одна попытка дала мне мои 300 подписчиков.В противном случае все заканчивается HTTP-кодом 400. Я использую рекурсию.Основываясь на значении next_cursor, пока он не достигнет 0. Я продолжаю нажимать на URL с его значением, чтобы получить следующую страницу подписчиков.

Что вы, ребята, предлагаете?Как преодолеть эту ситуацию.Где твиттер-серверы плохо отвечают.И они допустили ошибку, пригласив разработчиков для разработки приложений для них.

Я что-то не так делаю.Или это проблема Твиттера.

import java.io.ByteArrayInputStream;

import java.io.DataInputStream;импорт java.net.URL;импорт java.net.URLConnection;import java.util.ArrayList;import java.util.List;

import org.jdom.Document;import org.jdom.Element;import org.jdom.input.SAXBuilder;

открытый класс Twt {

String urlFlwrs= "http://twitter.com/statuses/followers/tahirakram.xml?cursor=";

List followers = new ArrayList();
long cursorCounter = -1;

public static void main(String[] args) {
    long start = System.currentTimeMillis();
    new Twt().readFollowFriends();
    System.out.printf("Total Time: %d secs", (System.currentTimeMillis() - start)/1000);        
}

void readFollowFriends(){
    try {
        StringBuffer followersData = new StringBuffer();
        /* use urlFrnds as a parameter if you want to fetch friends */ 
        URL url = new URL(urlFlwrs+cursorCounter);
        URLConnection urlConnection = url.openConnection();
        DataInputStream dis = new DataInputStream(urlConnection.getInputStream());
        String inputLine;
        while ((inputLine = dis.readLine()) != null) {
            followersData.append(inputLine);
        }

        SAXBuilder builder = new SAXBuilder();
        Document document = builder.build(new ByteArrayInputStream(followersData.toString().getBytes()));

        Element root = document.getRootElement();
        Element usersElm = root.getChild("users");          
        Element nextCursor = root.getChild("next_cursor");
        List users = usersElm.getChildren("user");

        for (int c = 0; c < users.size(); c++) {
            Element user = (Element) users.get(c);
            Element name = user.getChild("name");

            System.out.println(name.getText());
        }

        if (nextCursor != null){
            cursorCounter = Long.parseLong(nextCursor.getText());

            if (cursorCounter != 0)
                readFollowFriends();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

}

    java.io.IOException: Server returned HTTP response code: 400 for URL:http://twitter.com/statuses/followers/tahirakram.xml?cursor=1312316779756149406
     at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1133)
     at Twt.readFollowFriends(Twt.java:32)
     at Twt.readFollowFriends(Twt.java:62)
     at Twt.readFollowFriends(Twt.java:62)
     at Twt.main(Twt.java:15)
...