首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >WebRequest.GetResponse无异常地退出方法

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

Stack Overflow用户
提问于 2011-10-29 02:31:56
回答 1查看 631关注 0票数 0

我正在使用下面的代码从Twitter检索一些数据

代码语言:javascript
运行
复制
        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异常。

这个调用是在一个工作线程上进行的,所以应用程序会继续运行,但这个工作线程不会做其他任何事情。

有没有人能指出错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-10-29 02:59:40

您正在尝试访问streaming API。流式API不指定内容长度的响应头。他们不断地向响应中写入信息。所以你应该使用异步API来访问它。例如,您可以使用WebClient:

代码语言:javascript
运行
复制
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的等价物:

代码语言:javascript
运行
复制
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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7933348

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档