2016-12-14 26 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接受的不同的查詢。

相關問題