2016-12-14 48 views
0

我正在构建一个应用程序来提取包括不同过滤器在内的每种情况(位置,语言,轨迹)中可能使用或不使用的推文。我使用了一个FilterQuery和几个TwitterStreamingListener。 基本上,我建立一个查询,包括每个听众的要求,然后我收集来自twitter流的推文。Twitter4j FilterQuery当没有提供位置时出现NullPointerException

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)这意味着不需要位置?

回答

0

此查询的正确的语法是:

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

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

相关问题