GetURLAsync

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

/// <summary>
///    使用异步机制的例子
/// </summary>
public class CAsync
{
    const int MAX = 1024;
    public static int Main88()
    {
        Uri HttpSite;
        HttpWebRequest wreq;
        IAsyncResult r;
        HttpSite = new Uri("http://localhost");
        wreq = (HttpWebRequest)WebRequest.Create(HttpSite);
        r = (IAsyncResult)wreq.BeginGetResponse(new AsyncCallback(RespCallback), null);
        Thread.Sleep(3000);
        Console.WriteLine("Exiting.");
        return 0;
    }

    private static void RespCallback(IAsyncResult ar)
    //private static void RespCallback(AsyncCallback ar)
    {
        HttpWebRequest req;
        HttpWebResponse resp;
        int BytesRead;
        StreamReader Reader;
        StringWriter Writer;
        // 构建HttpWebRequest和HttpWebResponse实例
        req = (HttpWebRequest)ar;
        resp = (HttpWebResponse)req.EndGetResponse(ar);
        BytesRead = 0;
        char[] Buffer = new char[MAX];
        // 实例化读、写流
        Reader = new StreamReader(resp.GetResponseStream(), System.Text.Encoding.UTF8);
        Writer = new StringWriter();
        // 读写数据到缓冲区
        BytesRead = Reader.Read(Buffer, 0, MAX);
        while (BytesRead != 0)
        {
            Writer.Write(Buffer, 0, MAX);
            BytesRead = Reader.Read(Buffer, 0, MAX);
        }
        Console.WriteLine("Message = " + Writer.ToString());
    }


}

 

posted on 2011-11-15 22:31  breakpoint  阅读(99)  评论(0编辑  收藏  举报

导航