我正在嘗試使用Twitter流式API,並試圖爲用戶打開一個流,以便在事件發生時使用它們。我使用一組標準的類來進行REST API調用Twitter。當在「GET」調用中使用https://userstream.twitter.com/2/user.json時,響應流永遠不會結束......我打開一個StreamReader並按照我對任何其他REST調用的方式讀取響應。這對其他人來說可能是顯而易見的,但我該如何「消費」這個流......是否有讀取StreamReader的方式,因爲它正在讀取(意思是在關閉之前)?或者也許有一種不同的方法,我可以用戶消耗這個流....再次,我道歉,如果這接縫是一些初級的,但我現在還不知道...在此先感謝您的任何建議或幫助!在流式傳輸時從Web請求中消耗StreamReader流.NET?
這是原始來源我開始對此進行故障排除......這種方法是從我在LinkedIn論壇上發現的一組C#類製作而成的。在讀取「responseData = responseReader.ReadToEnd()」的行中,該方法開始「飲用」流...但是卻像一個無底杯......在關閉之前實時讀取這個數據流(這是基本上直到我停止調試或殺死進程)是我正在處理的問題。
Private Function WebResponseGet(ByVal webRequest As HttpWebRequest) As String
Dim responseReader As StreamReader = Nothing
Dim responseData As String = ""
Try
responseReader = New StreamReader(webRequest.GetResponse().GetResponseStream())
responseData = responseReader.ReadToEnd()
Catch
Throw
Finally
webRequest.GetResponse().GetResponseStream().Close()
responseReader.Close()
responseReader = Nothing
End Try
Return responseData
End Function
UPDATE &相關的問題:
所以,我想通了,下面的方法來保持流開,並將其寫入一個文件(這不會是最後的辦法,我米只是測試,顯影這樣做的最好辦法:)
Private Sub DrinkIt(ByVal webRequest As HttpWebRequest)
Dim coder As Encoding = Encoding.UTF8
Dim stream_reader As New StreamReader(webRequest.GetResponse().GetResponseStream(), coder, True, 1024)
Do While 0 < 1
Dim w As IO.StreamWriter
w = File.AppendText(targetFile)
Dim c(5) As Char
stream_reader.Read(c, 0, c.Length)
w.Write(c)
w.Close()
w.Dispose()
Loop
stream_reader.Close()
stream_reader.DiscardBufferedData()
stream_reader.Dispose()
End Sub
這打開Twitter的數據流寫入到一個文件,我每次鳴叫轉推,刪除,直接留言...等等。 ..該文件隨JSON對象一起增長cts附加到文本中。我使用Do While 0 < 1進行測試,因爲我只是想看看它工作。我在MSDN StreamReader Constructor Description上看到New構造函數應該爲「leaveOpen」接受一個布爾值,但是當我嘗試將此添加到構造函數時,不允許這樣的參數... 有沒有人有一個很好的例子來說明如何做到這一點強制和無限循環或只是比這更好的方法...我想簡單地閱讀每次從Twitter發送的新更新,並相應地解決它們?顯然有一種方法,我只是新的消費流這樣的概念,沒有它關閉..(**順便說一句,感謝博士邪惡的建議,我是在這個方向上領先......這是不正是他建議,但就是導致我在這裏)
請顯示一些來源...你有什麼試過?什麼是目標/什麼是不工作? – Yahia
Yahia,我已經更新了?與我的原始來源和描述的目標......實質上是讀取此流,並基於此流執行其他代碼塊。 – wakurth
請參閱我的答案中的鏈接 - 您將找到有關如何處理Twitter流媒體API的源代碼和解釋... – Yahia