2

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

任何帮助,将不胜感激!干杯

4

1 回答 1

4

@JohnSmith,我让它工作了。

如果用户单击按钮以将位置添加到他们的推文,则结果是 Status.getLocation()(或 Tweet.getLocation())有效。如果您选择不这样做,则不会发布您的位置,并将返回 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,但结果应该是相同的。继续在我的帐户上测试您的程序。只有最近的帖子才会返回非空位置。

于 2012-11-19T14:37:10.177 回答