getLocation()总是返回null,搜索Twitter

时间:2012-11-18 13:11:32

标签: java get twitter twitter4j

每当我通过推文搜索位置时,它都会返回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。

任何帮助将不胜感激!欢呼声

1 个答案:

答案 0 :(得分:4)

@JohnSmith,我明白了。

结果显示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,但结果应该是一样的。继续在我的帐户上测试您的程序。只有最新的帖子才会返回非空位置。