如何從Twitter中讀取響應數據Streaming API - POST狀態/過濾器? 我建立了連接,並收到200個狀態代碼,但我不知道如何閱讀推文。我只是想在他們來的時候發佈推文。Playframework和Twitter Streaming API
ws.url(url)
.sign(OAuthCalculator(consumerKey, requestToken))
.withMethod("POST")
.stream()
.map { response =>
if(response.headers.status == 200)
println(response.body)
}
編輯:我發現這個解決方案
ws.url(url)
.sign(OAuthCalculator(consumerKey, requestToken))
.withMethod("POST")
.stream()
.map { response =>
if(response.headers.status == 200){
response.body
.scan("")((acc, curr) => if (acc.contains("\r\n")) curr.utf8String else acc + curr.utf8String)
.filter(_.contains("\r\n"))
.map(json => Try(parse(json).extract[Tweet]))
.runForeach {
case Success(tweet) =>
println("-----")
println(tweet.text)
case Failure(e) =>
println("-----")
println(e.getStackTrace)
}
}
}
感謝您的解釋 – mkovacek
以後可以關閉連接嗎?我打算有多個跟蹤不同單詞的請求,我希望在未來某個時間關閉特定連接? – mkovacek
查看Akka文檔中的[Dynamic Stream Handling](http://doc.akka.io/docs/akka/2.4.8/scala/stream/stream-dynamic.html)。一個想法是:創建一個共享kill開關,然後用'source.via(killSwitch.flow)'將其添加到流中。在killswitch上運行'shutdown()'應該關閉連接。 – Mikesname