.net WebRequest.GetResponse无异常地退出方法

.net WebRequest.GetResponse无异常地退出方法,.net,httpwebrequest,.net,Httpwebrequest,我正在使用下面的代码从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"

我正在使用下面的代码从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")
Dim FilterData=“follow=13,15”
Dim请求作为WebRequest=HttpWebRequest.Create(“https://stream.twitter.com/1/statuses/filter.json")
Request.ContentType=“application/x-www-form-urlencoded”
Request.Method=“POST”
Request.Credentials=新网络凭据(“,”)
Request.ContentLength=FilterData.Length
Dim RequestStream=Request.GetRequestStream()
Dim RequestWriter作为新的StreamWriter(RequestStream)
RequestWriter.Write(FilterData)
RequestWriter.Close()
“得到回应。
Dim响应为WebResponse=Request.GetResponse()
控制台写入线(“已到达”)
如果我在
Request.GetResponse()
行上放置一个断点,那么在它执行之前的所有操作都会正常进行,但是不会命中下一行,也不会命中任何异常处理程序。我在输出窗口中没有看到任何第一次机会异常

此调用是在工作线程上进行的,因此应用程序将继续运行,但此工作线程不会执行任何其他操作


有人能指出错误吗?

您正在尝试访问一个。流式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 Sub

您正在尝试访问一个。流式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 Sub