.net WebRequest.GetResponse无异常地退出方法
我正在使用下面的代码从Twitter检索一些数据.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"
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