我正在尝试使用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