每当我通过推文搜索位置时,它都会返回null,这是我的代码,任何想法?
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setOAuthConsumerKey("8888888888888888888");
cb.setOAuthConsumerSecret("8888888888888888888888888");
cb.setOAuthAccessToken("8888888888888888888888");
cb.setOAuthAccessTokenSecret("8888888888888888888888888888");
Twitter twitter = new TwitterFactory(cb.build()).getInstance();
Query query = new Query("London");
query.setRpp(1000000);
QueryResult result = twitter.search(query);
ArrayList tweets = (ArrayList) result.getTweets();
for (int i = 0; i < tweets.size(); i++) {
Tweet t = (Tweet) tweets.get(i);
String user = t.getFromUser();
GeoLocation l = t.getGeoLocation();
String locNam = t.getLocation();
String msg = t.getText();
Date d = t.getCreatedAt();
println(locNam + "");
我可以让getGeoLocation()
正常工作,它们很少而且很远但是我确实得到了一些getLocation
每次搜索都返回null。
任何帮助将不胜感激!欢呼声
答案 0 :(得分:4)
结果显示Status.getLocation()(或Tweet.getLocation())可用,如果用户单击按钮将ADD位置添加到他们的推文。如果您选择不这样做,那么您的位置将不会被发布,并且将返回null。
我使用我的测试Twitter帐户对此进行了测试:@Saviour_Self在我最近的帖子中,我提供了一个位置,当我运行我的应用程序时,它返回了该位置。我运行了一个循环来从我的帐户获取所有状态更新,其中只有一个返回了一个位置。
for (Status s : tweets) {
System.out.println(s.getLocation()); //Returned the location of the tweet.
System.out.println(s.getUser().getLocation()); /* Returned the
User Profile Location (always constant)*/
}
请记住,我使用JTwitter来做这件事,而不是Twitter4j,但结果应该是一样的。继续在我的帐户上测试您的程序。只有最新的帖子才会返回非空位置。