Я экспериментирую с потоковым API-интерфейсом Twitter и пытаюсь открыть поток для пользователя, который будет использовать события по мере их возникновения.Я использую стандартный набор классов для выполнения REST API-вызовов в Twitter.При использовании https://userstream.twitter.com/2/user.json в вызове «GET» поток ответов никогда не заканчивается ... Я открываю StreamReader и читаю ответ, как и при любом другом вызове REST в Twitter.Это, вероятно, очевидно для других, но как мне «потреблять» этот поток ... Есть ли способ прочитать StreamReader во время чтения (т.е. до его закрытия)?или, может быть, есть другой метод, которым я могу воспользоваться, чтобы использовать этот поток .... еще раз, я прошу прощения, если этот шов будет элементарным для некоторых, но я не могу понять это в настоящее время ... Заранее спасибо за любой советили помочь !!!
Вот исходный код, с которым я начал устранять неполадки, связанные с этим ... Этот метод был изготовлен из набора классов C #, которые я нашел на форуме в LinkedIn.В строке, которая гласит "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
ОБНОВЛЕНИЕ И СВЯЗАННЫЙ ВОПРОС:
Итак, я понял,следующий способ сохранить поток открытым и записать его в файл (это не будет последний подход, я просто тестирую, разработка наилучшего способа сделать это:)
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, добавленными к тексту.Я использовал Do While 0 <1 для тестирования здесь, потому что я просто хотел, чтобы он работал.</a> Я вижу в Описание конструктора MSDN StreamReader *1016*, что предполагается, что конструктор New принимает логическое значение для "leftOpen", но при попытке добавить это в конструктор такой аргумент не допускается ... у кого-нибудь есть хороший пример того, как сделать это с помощью принудительного и бесконечного цикла или просто с лучшим подходом, чем этот ... Я хотел бы просто прочитать новые обновления, отправляемые каждый раз из Твиттера, и обращаться к ним соответствующим образом?Кстати, я просто новичок в концепции потребления такого потока без его закрытия .. (** Кстати, благодаря предложению доктора Зла, я был в этом направлении ... Это не совсем то, что онпредложил, но вот что привело меня сюда)