使用HTTPWebRequest实时数据

时间:2013-02-17 14:58:29

标签: c# windows-phone-8

如何从C#中的服务器获取实时(连续)数据?

我打开HTTPWebRequest但服务器没有完成该请求,服务器每20秒发送一些文本数据,我想处理文本数据并在服务器完成请求10分钟后显示给用户。

2 个答案:

答案 0 :(得分:1)

HTTP不是会话协议。它意味着像这样工作

  1. 打开连接
  2. 发送请求
  3. 收到回复
  4. 关闭连接
  5. 您可以做的基本上是使用TCPClient / Socket,这会将您移动到低于HTTP的层,并允许您创建持久连接。

    有各种各样的框架可以让您的生活更轻松。

    另外,您可能需要查看Comet

答案 1 :(得分:1)

您可以使用WebClient的流API:

var client = new WebClient();
client.OpenReadCompleted += (sender, args) =>
{
    using (var reader = new StreamReader(args.Result))
    {
        while (!reader.EndOfStream)
        {
            string line = reader.ReadLine();
            // do something with the result
            // don't forget that this callback
            // is not invoked on the main UI thread so make
            // sure you marshal any calls to the UI thread if you 
            // intend to update your UI here.

        }
    }
};
client.OpenReadAsync(new Uri("http://example.com"));

以下是Twitter Streaming API的完整示例:

using System;
using System.IO;
using System.Net;

class Program
{
    static void Main()
    {
        var client = new WebClient();
        client.Credentials = new NetworkCredential("username", "secret");
        client.OpenReadCompleted += (sender, args) =>
        {
            using (var reader = new StreamReader(args.Result))
            {
                while (!reader.EndOfStream)
                {
                    Console.WriteLine(reader.ReadLine());
                }
            }
        };
        client.OpenReadAsync(new Uri("https://stream.twitter.com/1.1/statuses/sample.json"));
        Console.ReadLine();
    }
}