Twitter4j, "Demasiados términos especificados en la consulta"

Estoy usando el siguiente método para obtener todos los nombres de pantalla de los usuarios que siguen al usuario autenticado.

private void getFollowing() {   
     Twitter t = new TwitterFactory().getInstance();
     t.setOAuthConsumer(OAUTH.CONSUMER_KEY, OAUTH.CONSUMER_SECRET);
     aToken = getToken();
     t.setOAuthAccessToken(aToken);
     try {
        long[] friendsID = t.getFriendsIDs(userID, -1).getIDs();
        ResponseList<User> userName = t.lookupUsers(friendsID);
        int count = 0;
        for (User u : userName) {
            count++;
            Log.d("USERNAME : "+ Integer.toString(count), u.getScreenName());
        }
     } catch (TwitterException e) {
        e.printStackTrace();
    }
}

t.lookupUsers(friendsID) Causa el siguiente error.

W/System.err(16076): {"errors":[{"code":18,"message":"Too many terms specified in query"}]}

Por lo que entiendo, el lookupUsers()método devolverá información de hasta 100 usuarios a la vez. Estoy proporcionando más que eso. ¿Podría ser por eso? Si es así, ¿cómo puedo limitar la solicitud original y recorrer los usuarios restantes para obtener todos sus nombres de pantalla?

Si me equivoco acerca de por qué recibo el error, ¿qué más estoy haciendo mal?

RESPONDER

    private void getFollowing() {   
         Twitter t = new TwitterFactory().getInstance();
         t.setOAuthConsumer(OAUTH.CONSUMER_KEY, OAUTH.CONSUMER_SECRET);
         aToken = getToken();
         t.setOAuthAccessToken(aToken);
         ArrayList<String> names = new ArrayList<String>();
         try {
            int start = 0;
            int finish = 100;
            ArrayList<Long> IDS = new ArrayList<Long>();
            long[] friendsID =  t.getFriendsIDs(userID, -1).getIDs();
            boolean check = true;
            while (check) {
                for (int i=start;i<finish;i++) {
//get first 100     
                    IDS.add(friendsID[i]);
//if at the end, stop
                    if (friendsID.length-1 == i) {
                        check = false;
                        break;                      
                    }
                }
//set values for next 100
                start = start+100;
                finish = finish+100;
                long[] ids = Longs.toArray(IDS);
                ResponseList<User> userName = t.lookupUsers(ids);
//clear so long[] holds max 100 at any given time
                IDS.clear();
                for (User u : userName) {
                    names.add(u.getScreenName());
                }
            }
            String[] screenNames = (String[]) names.toArray(new String[names.size()]);

            ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line, screenNames);
            mPreview.setAdapter(adapter);
         } catch (TwitterException e) {
            e.printStackTrace();
        }
    }
Respuesta 1

En una página JSP, cuando el usuario cierra la sesión, elimino sus cookies de inicio de sesión con este código: Cookie killMyCookie = nueva Cookie ("cookie1", nulo); killMyCookie.setMaxAge (0); killMyCookie.setPath ("/ JSPLearn") ...

Puedo autenticarme fácilmente en este sitio a través del navegador. Pero NO HAY POSIBLE manera de conectarse a él utilizando Java. Siempre recibo un error 401. Traté de conectarme a través de Jsoup y HTMLUnit y aún nada ...

Quiero obtener el directorio de instalación de tomcat en mi computadora usando java. Intenté usar: System.getProperty ("catalina.base"); y System.getProperty ("catalina.home"); Pero ambos métodos devuelven nulo ...

Quiero agregar un texto multilínea en una etiqueta. Logré hacerlo correctamente poniendo algunas etiquetas html, así que tengo mi etiqueta multilínea. Ahora me enfrento a un segundo desafío que no puedo superar. Necesito ...