【问题标题】:Twitter4J: Search Tweets by HashTag, get JSON result onlyTwitter4J:通过 HashTag 搜索推文,仅获取 JSON 结果
【发布时间】:2015-02-05 08:27:06
【问题描述】:

我有一个学期项目,其中一部分是解析 twitter JSON 对象。我正在使用 Jersey 和 JAX-RS 我最初尝试使用我的 Jersey 客户端直接解析它,这是我的原始代码: (原文链接:https://api.twitter.com/1.1/search/tweets.json?q=%23coldplay)

public static String lastFMHTTP() {
    Client client = ClientBuilder.newClient();
    String Str = client.target("https://api.twitter.com/")
                        .path("1.1")
                        .path("tweets.json?")
                        .queryParam("q", "#coldplay")
                        .queryParam("result_type", "recent")
                        .request(MediaType.APPLICATION_JSON_TYPE)   
                        .get(String.class);
    return Str;
}

但结果并不好;我不明白如何传递 tweets.json?作为参数,无论如何这都会返回“错误的身份验证数据”(我尝试了另一种没有路径和查询参数的解析方法)。但是,此代码适用于我的 lastfm 请求。 api 密钥包含在 URL 中

经过一番搜索,我找到了 twitter4j,这是一个专门为此目的而制作的库。我成功地收到了 JSON 响应。这是我正在使用的代码:

public static String twitterHTTP() throws TwitterException {
    Twitter twitter = TwitterFactory.getSingleton();
    Query query = new Query("#coldplay");
    QueryResult result = twitter.search(query);
    return result;
}

当我运行这个方法时,object.twitterHTTP(); 它将信息打印到我的控制台中。我根本不需要打印任何东西,我只需要它以 JSON 格式返回一个字符串。

我最好的选择是什么? 有没有办法通过第一个代码验证 twitter,或者有没有办法从第二个代码中删除所有打印并让它返回一个字符串对象? 谢谢

【问题讨论】:

  • "tweets.json?" ? 不应该在那里。它会在您使用查询参数时隐式附加。
  • " 它将各种垃圾信息打印到我的控制台中" - 一个开发者的“垃圾”是另一个开发者的宝藏(至少在信息宝藏的意义上 :-) 也许它想告诉你一些事情。
  • @peeskillet 我尝试删除它,但它甚至没有给我状态码错误垃圾:arrrghh

标签: json twitter jersey twitter4j hashtag


【解决方案1】:

尤里卡,我明白了。我很高兴我现在可以死了。 我的 twitter4j.properties 文件中的 Debug 设置为 true,这就是为什么我打印出所有这些“垃圾”信息,而这些信息实际上是日志。将 debug 设置为 false 解决了问题,并且不再打印日志。

事实证明,我实际上并不需要将 JSON 响应作为单独的字符串返回;我想要这样做的原因是创建类/方法和对象来解析 JSON 响应,而实际上,twitter4j 库提供了解析的方法。因此,我不需要创建新代码。

【讨论】:

    猜你喜欢
    • 2014-04-14
    • 2014-12-19
    • 2015-11-20
    • 2018-08-12
    • 2015-12-18
    • 2018-11-24
    • 2015-08-10
    • 2013-12-25
    • 1970-01-01
    相关资源
    最近更新 更多