我正在尝试使用 .NET WebRequest/WebResponse 类来访问 Twitter 流 API 此处"http://stream.twitter.com/spritzer.json"
.
我需要能够打开连接并从打开的连接中增量读取数据。
目前,当我打电话时WebRequest.GetResponse
方法,它会阻塞,直到下载整个响应。我知道有一个BeginGetResponse
方法,但这只会在后台线程上执行相同的操作。我需要在下载仍在进行时访问响应流。对于我来说,这些课程似乎不可能做到这一点。
Twitter 文档中有对此的具体评论:
“请注意,某些 HTTP 客户端库仅在服务器关闭连接后返回响应正文。这些客户端将无法访问 Streaming API。您必须使用将增量返回响应数据的 HTTP 客户端。最强大的 HTTP客户端库将提供此功能。例如,Apache HttpClient 将处理此用例。”
他们指向 Apache HttpClient,但这并没有多大帮助,因为我需要使用 .NET。
任何想法这是否可能WebRequest/WebResponse
,或者我必须去参加较低级别的网络课程吗?也许还有其他库可以让我做到这一点?
谢谢
艾伦
我最终使用了 TcpClient,效果很好。尽管如此,我仍然有兴趣知道这是否可以通过 WebRequest/WebResponse 实现。这是我的代码,以防有人感兴趣:
using (TcpClient client = new TcpClient())
{
string requestString = "GET /spritzer.json HTTP/1.1\r\n";
requestString += "Authorization: " + token + "\r\n";
requestString += "Host: stream.twitter.com\r\n";
requestString += "Connection: keep-alive\r\n";
requestString += "\r\n";
client.Connect("stream.twitter.com", 80);
using (NetworkStream stream = client.GetStream())
{
// Send the request.
StreamWriter writer = new StreamWriter(stream);
writer.Write(requestString);
writer.Flush();
// Process the response.
StreamReader rdr = new StreamReader(stream);
while (!rdr.EndOfStream)
{
Console.WriteLine(rdr.ReadLine());
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)