Twitter4j FilterQuery NullPointerException未提供位置时

时间:2016-12-14 17:39:26

标签: twitter twitter4j

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

twitterStream.filter(query);

除非没有任何侦听器包含位置要求,否则它可以正常工作。然后,不使用位置字段并保持为空:

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

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

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 )表示不需要位置?

1 个答案:

答案 0 :(得分:0)

此查询的正确语法为:

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

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