Twitter - 请求的URI无效或请求的资源(例如用户)不存在。

时间:2017-11-14 04:21:45

标签: java list twitter java.util.scanner twitter4j

所需行为:从TXT文件中列出的用户ID获取用户推文

事先完成的工作/研究: 注意:我尝试查找此错误消息,以及在发布此消息之前与我的代码中使用的类相关联的任何消息。

注意:此外,我通过访问Twitter并查找用户名手动检查用户,然后他们就会出现。例如,这是其中一个用户,他们确实出现了:the js file not found 我已经与列表中的许多用户完成了这项工作。

注意:仅在手动输入用户时(使用此https://twitter.com/rendrarh),但在从文件中提取时不起作用

我使用Twitter4j获取用户推文并收到以下错误:

TwitterException{exceptionCode=[7defbde2-0dc3a547], statusCode=404, message=Sorry, that page does not exist., code=34, retryAfter=-1, rateLimitStatus=RateLimitStatusJSONImpl{remaining=899, limit=900, resetTimeInSeconds=1510626518, secondsUntilReset=899}, version=4.0.4}
at twitter4j.HttpClientImpl.handleRequest(HttpClientImpl.java:164)
at twitter4j.HttpClientBase.request(HttpClientBase.java:57)
at twitter4j.HttpClientBase.get(HttpClientBase.java:75)
at twitter4j.TwitterImpl.get(TwitterImpl.java:1786)
at twitter4j.TwitterImpl.getUserTimeline(TwitterImpl.java:131)
at twitter4j.TwitterImpl.getUserTimeline(TwitterImpl.java:152)
at UserTweets.main(UserTweets.java:42)

第42行是:statuses.addAll(twitter.getUserTimeline(user));

这是我的代码:

import java.io.File;
import java.util.*;
    import twitter4j.*;
    import twitter4j.conf.*;

public class UserTweets {       

    public static void main(String[] a) {

        ConfigurationBuilder cb = new ConfigurationBuilder();
        cb.setDebugEnabled(true)
        .setOAuthConsumerKey("key")
        .setOAuthConsumerSecret("key")
        .setOAuthAccessToken("key")
        .setOAuthAccessTokenSecret("key");

        Twitter twitter = new TwitterFactory(cb.build()).getInstance();

        String user;

        List statuses = new ArrayList();
        int userCount = 1;

        String fileName = "C:-----/spam-twitter-accounts.txt";
        File file = new File(fileName);
        Scanner input = new Scanner(file);
        List<String> list = new ArrayList<String>();



        while (userCount < 20 && input.hasNextLine()) {
          try {

            user =  list.add(input.nextLine());

            statuses.addAll(twitter.getUserTimeline(user));

            System.out.println(statuses.toString());
            if (statuses.size() == 20)
              break;
          }
          catch(TwitterException e) {

            e.printStackTrace();
          }
        }
    }

}

1 个答案:

答案 0 :(得分:0)

由于txt文件有数字,需要将其更改为Long:

while (userCount < 20 && input.hasNextLong()) {
      try {

        user =  input.nextLong();