【问题标题】:Twitter4j FilterQuery NullPointerException when location is not provided未提供位置时的 Twitter4j FilterQuery NullPointerException
【发布时间】:2016-12-15 23:46:45
【问题描述】:

我正在构建一个应用程序来提取推文,包括可能在每种情况下使用或不使用的不同过滤器(位置、语言、轨道)。我使用了一个 FilterQuery 和几个 TwitterStreamingListener。 基本上,我构建了一个包含每个听众要求的查询,然后我从 twitter 流中收集推文。

twitterStream.filter(query);

除了没有听众包含位置要求的情况外,它工作正常。然后,位置字段不被使用并保持为空:

FilterQuery{count=0, follow=null, track=[party,night,house], locations=[null], language=[en]}

当其他字段保持为空时没有问题,但在这种情况下,我收到此错误:

Exception in thread "Twitter Stream consumer-18[Establishing connection]" java.lang.NullPointerException
ERROR [stderr] (Twitter Stream consumer-18[Establishing connection])    at twitter4j.FilterQuery.toLocationsString(FilterQuery.java:200)
ERROR [stderr] (Twitter Stream consumer-18[Establishing connection])    at twitter4j.FilterQuery.asHttpParameterArray(FilterQuery.java:182)
ERROR [stderr] (Twitter Stream consumer-18[Establishing connection])    at twitter4j.TwitterStreamImpl.getFilterStream(TwitterStreamImpl.java:306)
ERROR [stderr] (Twitter Stream consumer-18[Establishing connection])    at twitter4j.TwitterStreamImpl$7.getStream(TwitterStreamImpl.java:287)
ERROR [stderr] (Twitter Stream consumer-18[Establishing connection])    at twitter4j.TwitterStreamImpl$TwitterStreamConsumer.run(TwitterStreamImpl.java:488)

我是否应该始终在我的 FilterQuery 中包含位置信息?或者是否可以使用任何其他表示不需要位置的表达式(而不是 null)?

【问题讨论】:

    标签: twitter twitter4j


    【解决方案1】:

    这个查询的正确语法是:

    FilterQuery{count=0, follow=null, track=[party,night,house], locations=null, language=[en]}
    

    这就是在没有调用 query.locations() 方法时形成的查询。但是,我的代码调用此方法发送一个空的位置列表,这导致 API 不接受不同的查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-15
      • 2017-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多