使用 BeginGetRequestStream 方法对流实例发出异步请求

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

class HttpWebRequestBeginGetRequest
{
   
public static ManualResetEvent allDone = new ManualResetEvent(false);
   
public static void Main()
    {
       

           
// Create a new HttpWebRequest object.
            HttpWebRequest request=(HttpWebRequest) WebRequest.Create("http://www.contoso.com/example.aspx");   
   
           
// Set the ContentType property.
            request.ContentType="application/x-www-form-urlencoded";
           
// Set the Method property to 'POST' to post data to the URI.
            request.Method = "POST";
           
// Start the asynchronous operation.   
            request.BeginGetRequestStream(new AsyncCallback(ReadCallback), request);   
           
           
// Keep the main thread from continuing while the asynchronous
           
// operation completes. A real world application
           
// could do something useful such as updating its user interface.
            allDone.WaitOne();

           
// Get the response.
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            Stream streamResponse
= response.GetResponseStream();
            StreamReader streamRead
= new StreamReader(streamResponse);
           
string responseString = streamRead.ReadToEnd();
            Console.WriteLine(responseString);
           
// Close the stream object.
streamResponse.Close(); streamRead.Close(); // Release the HttpWebResponse.
            response.Close();
        }
   
   
private static void ReadCallback(IAsyncResult asynchronousResult)
    {   
            HttpWebRequest request
= (HttpWebRequest)asynchronousResult.AsyncState;
           
// End the operation.
            Stream postStream = request.EndGetRequestStream(asynchronousResult);
            Console.WriteLine(
"Please enter the input data to be posted:");
           
string postData = Console.ReadLine ();
           
           
// Convert the string into a byte array.
            byte[] byteArray = Encoding.UTF8.GetBytes(postData);
           
// Write to the request stream.
            postStream.Write(byteArray, 0, postData.Length); postStream.Close (); allDone.Set(); }}
posted on 2009-08-19 11:03  米高佐敦  阅读(2255)  评论(1编辑  收藏  举报