Несколько запросов в разных методах 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()
первый.