0

嘿,我正在开发一个 java 桌面应用程序。我必须使用 twitter4j 3.0.5 按主题标签搜索推文。我在身份验证和搜索推文方面没有问题,但有一些问题:我已经用 topsy.com 测试了我的搜索结果,我发现我收到的推文很少或没有推文。像#jobbingfest 有大约 500 条推文,但我发现它是空的……有趣的是:Twitter.search(query) 文档说

Returns tweets that match a specified query. This method calls http://search.twitter.com/search.json

该api返回一个像这样的json

{"errors": [{"message": "The Twitter REST API v1 is no longer active. Please migrate to API v1.1. https://dev.twitter.com/docs/api/1.1/overview.", "code": 68}]}

我有点困惑......如果该资源不再可用,为什么我能够获得推文?

我试图理解这个问题,但没办法......我不得不在这里写信寻求帮助:p。

非常感谢!里西奥。

附言。对不起,也许我的英语不太好...

pps。检索我用来执行此操作的 100 多条推文是否正确?

List<MioStatus> listaStatus = null;
try {
    listaStatus = new ArrayList<MioStatus>();
    result = twitter.search(query);
    while(result.nextQuery() != null){
        for (Status status : result.getTweets()) {
            if(status.isRetweet()){
                listaStatus.add(new MioStatus(status.getId(), true, "RT " + status.getRetweetedStatus().getText(), status.getUser(), status.getGeoLocation(), status.getRetweetCount(), status.getCreatedAt()));
            }else{
                listaStatus.add(new MioStatus(status.getId(), true, status.getText(), status.getUser(), status.getGeoLocation(), status.getRetweetCount(), status.getCreatedAt()));
            }
         }
         result = twitter.search(result.nextQuery());
    }
4

2 回答 2

0

好的,我得到了一些东西......就像那样改变了推特的分配

Twitter twitter = TwitterFactory.getSingleton();

不要问我为什么,我正在使用 mvc 并且在地图中保存实例应该是一样的,但是......现在问题是......“旧推文在哪里??” 设置 setSince() 是没用的。推特限制?

于 2013-10-13T15:44:42.207 回答
0

Twitter REST API v1 不再活动。您无法使用它来获取高音扬声器的数据。从网站

REST API 的第 1 版现已弃用,并将在未来几个月内停止运行。立即迁移到 1.1 版。

但是,API 1.1 仅支持 JSON,放弃了 XML、Atom 和 RSS 支持。

再次在您的代码中,您nextQuery()在以下片段中调用了两次(阅读评论):

    while(result.nextQuery() != null){   // you are calling nextQuery() but 
                                   //you should call hasNext() boolean check
        for (Status status : result.getTweets()) {
            // do whatever you were doing

         }
         result = twitter.search(result.nextQuery()); 
                    // you are calling nextQuery() here, so no need to call 
                  //in while conditional check
       } // while ends here
于 2013-10-12T19:38:51.217 回答