我試圖使用Twitter hbc library來獲取基於位置的推文。我已經根據示例文件FilterStreamExample
設置了我的代碼。這個例子的作品,但是當我嘗試將位置添加到終點,我得到致命錯誤代碼:406致命錯誤代碼406當按位置過濾時使用hbc
下面是工作代碼:
StatusesFilterEndpoint endpoint = new StatusesFilterEndpoint();
endpoint.trackTerms(Lists.newArrayList("twitterapi", "#yolo"));
但是當我添加以下代碼,我得到錯誤:
Coordinate southwest = new Coordinate(-87.648926, 41.883109);
Coordinate northeast = new Coordinate(-87.606354, 41.828050);
Location chicago = new Location(southwest, northeast);
endpoint.locations(Lists.newArrayList(chicago));
感謝您的幫助!
格雷格
編輯 這裏是我的代碼的全部:
public class App {
public static void oauth(String consumerKey, String consumerSecret, String token, String secret) throws InterruptedException {
BlockingQueue<String> queue = new LinkedBlockingQueue<String>(100000);
StatusesFilterEndpoint endpoint = new StatusesFilterEndpoint();
Coordinate southwest = new Coordinate(-87.857666, 41.657347);
Coordinate northeast = new Coordinate(-87.587128, 41.795712);
Location chicago = new Location(southwest, northeast);
endpoint.locations(Lists.newArrayList(chicago));
Authentication auth = new OAuth1(consumerKey, consumerSecret, token, secret);
BasicClient client = new ClientBuilder()
.name("exampleStream")
.hosts(Constants.STREAM_HOST)
.endpoint(endpoint)
.authentication(auth)
.processor(new StringDelimitedProcessor(queue))
.build();
// Establish a connection
client.connect();
PrintWriter writer;
try {
writer = new PrintWriter("twitterstream.txt", "UTF-8");
// Do whatever needs to be done with messages
for (int msgRead = 0; msgRead < 1000; msgRead++) {
if (client.isDone()) {
System.out.println("Client connection closed unexpectedly: " + client.getExitEvent().getMessage());
break;
}
String msg = queue.poll(5, TimeUnit.SECONDS);
if (msg == null) {
System.out.println("Did not receive a message in 5 seconds");
} else {
writer.println(msg);
}
}
writer.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
client.stop();
}
public static void main(String[] args) {
try {
App.oauth("LEDrJPDhn6C2trbde95WZg", "gEmlgewUodOoDjMNl2QbcqsbGvYDxNZWNRULchPE", "292576546-SWzEgMU7mC7Haat3lLEOQ0mXsZFwBf8F3ZKLBMVa", "ajPN2rGLx57yPoUjYe2qN4bE763orux4KwYeoCAvuLRPM");
} catch (InterruptedException e) {
System.out.println(e);
}
}
我運行了你的代碼,Tweets被寫入了這個文件,我沒有看到任何錯誤。錯誤是否會立即發生?你能否將錯誤/堆棧軌道的細節添加到問題中?順便說一句,你應該現在撤銷你的API令牌,現在它們是公開的。 – Jonathan
hm ..看起來也許這是一個憑證的東西(雖然它是奇怪的,它會適用於第一個查詢,而不是第二)...感謝您的幫助,但! – user1801348