Несколько запросов в разных методах Twitter4j Обработка

Я пытаюсь выполнить отдельные запросы в разных методах, приведенный ниже код не является моим реальным кодом, но является лишь примером ошибки, у меня есть

Twitter twitter = new TwitterFactory(cb.build()).getInstance();

вызывается в обоих методах, однако я получаю ошибку

IllegalStateException: больше нельзя использовать этот компоновщик, build() уже вызван

если я сделаю это глобальным, то получу ту же ошибку, вероятно, это просто глупость, но я не могу решить это, я слишком долго смотрю на это.

вот мой код:

ConfigurationBuilder cb = new ConfigurationBuilder();

  double lat = 51.5171;
  double lon = 0.1062;
  double res = 37;
  String resUnit = "mi";

public void setup(){

cb.setOAuthConsumerKey("XXXXXXXXXXXXXXXXXXXXXx");
cb.setOAuthConsumerSecret("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
cb.setOAuthAccessToken("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
cb.setOAuthAccessTokenSecret("XXXXXXXXXXXXXXXXXXXXXXXXXXXX");

  queryLon();
  queryBir();
}

void queryLon(){
try {
Twitter twitter = new TwitterFactory(cb.build()).getInstance();

  for (int j = 0; j < 5; j++) {

  Query query = new Query();
  query.setRpp(100);

  QueryResult result = twitter.search(new Query().geoCode(new GeoLocation(lat,lon), res, resUnit));
  ArrayList tweets = (ArrayList) result.getTweets();


  for (int i = 0; i < tweets.size(); i++) {

  Tweet t = (Tweet) tweets.get(i);
//User u= twitter.showUser("twitter");

String location = t.getLocation();
println("Location: " + location);

  }
}
}

catch (TwitterException te) {
println("Couldn't connect: " + te);
};

}

void queryBir(){
try {

Twitter twitter = new TwitterFactory(cb.build()).getInstance();

  for (int j = 0; j < 5; j++) {

  Query query = new Query();
  query.setRpp(100);

  QueryResult result = twitter.search(new Query().geoCode(new GeoLocation(lat,lon), res, resUnit));
  ArrayList tweets = (ArrayList) result.getTweets();


  for (int i = 0; i < tweets.size(); i++) {

  Tweet t = (Tweet) tweets.get(i);

String location = t.getLocation();
println("Location: " + location);



  }
}
}

catch (TwitterException te) {
println("Couldn't connect: " + te);
};

}

любая помощь будет оценена, ура.

забыл упомянуть, что я использую Twitter4j и Processing

1 ответ

Решение

Выглядит довольно ясно: ошибка говорит нам, что build() можно вызвать только один раз, и вы явно пытаетесь вызвать его несколько раз. Итак, простое решение: если вы хотите создать новую TwitterFactory, либо запишите результат cb.build() в переменной в первый раз, когда вы вызываете ее, а затем используете ее повторно или создаете новый экземпляр ConfigurationBuilder и вызывать его build() всегда, когда вы создаете новый TwitterFactoryхотя это кажется довольно расточительным. Попробуй поймать cb.build() первый.

Другие вопросы по тегам