我正在使用下面的代码从Twitter检索一些数据
Dim FilterData = "follow=13,15"
Dim Request As WebRequest = HttpWebRequest.Create("https://stream.twitter.com/1/statuses/filter.json")
Request.ContentType = "application/x-www-form-urlencoded"
Request.Method = "POST"
Request.Credentials = New NetworkCredential("<Username>", "<Password>")
Request.ContentLength = FilterData.Length
Dim RequestStream = Request.GetRequestStream()
Dim RequestWriter As New StreamWriter(RequestStream)
RequestWriter.Write(FilterData)
RequestWriter.Close()
' Get the response.
Dim Response As WebResponse = Request.GetResponse()
Console.Writeline("Reached")如果我将断点放在Request.GetResponse()行上,它之前的所有东西都可以正常执行,但是下面的行永远不会命中--任何异常处理程序也不会命中。我在output窗口中看不到任何first chance异常。
这个调用是在一个工作线程上进行的,所以应用程序会继续运行,但这个工作线程不会做其他任何事情。
有没有人能指出错误?
发布于 2011-10-29 02:59:40
您正在尝试访问streaming API。流式API不指定内容长度的响应头。他们不断地向响应中写入信息。所以你应该使用异步API来访问它。例如,您可以使用WebClient:
class Program
{
static void Main()
{
using (var client = new WebClient())
{
client.Credentials = new NetworkCredential("username", "password");
client.OpenReadCompleted += (sender, e) =>
{
using (var reader = new StreamReader(e.Result))
{
while (!reader.EndOfStream)
{
Console.WriteLine(reader.ReadLine());
}
}
};
client.OpenReadAsync(new Uri("https://stream.twitter.com/1/statuses/filter.json?follow=12,13"));
}
Console.ReadLine();
}
}和VB.NET的等价物:
Sub Main()
Dim client = New WebClient()
client.Credentials = New NetworkCredential("username", "password")
AddHandler client.OpenReadCompleted, Sub(sender, e)
Using reader = New StreamReader(e.Result)
While Not reader.EndOfStream
Console.WriteLine(reader.ReadLine())
End While
End Using
End Sub
client.OpenReadAsync(New Uri("https://stream.twitter.com/1/statuses/filter.json?follow=12,13"))
Console.ReadLine()
End Subhttps://stackoverflow.com/questions/7933348
复制相似问题