using
System;
using System.IO;
using System.Net;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace Test
{
public class RequestState
{
const int BUFFER_SIZE = 1024 ;
public StringBuilder requestData;
public byte [] BufferRead;
public HttpWebRequest request;
public HttpWebResponse response;
public Stream streamResponse;
public RequestState()
{
BufferRead = new byte [BUFFER_SIZE];
requestData = new StringBuilder( "" );
request = null ;
streamResponse = null ;
}
}
public class HttpWebRequest_BeginGetResponse
{
public static ManualResetEvent allDone = new ManualResetEvent( false );
const int BUFFER_SIZE = 1024 ;
const int DefaultTimeout = 2 * 60 * 1000 ; // 2 minutes timeout
// Abort the request if the timer fires.
private static void TimeoutCallback( object state, bool timedOut)
{
if (timedOut)
{
HttpWebRequest request = state as HttpWebRequest;
if (request != null )
{
request.Abort();
}
}
}
public void Read()
{
try
{
// Create a HttpWebrequest object to the desired URL.
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create( @" http://passport.cnblogs.com/login.aspx " );
RequestState myRequestState = new RequestState();
myRequestState.request = myHttpWebRequest;
IAsyncResult result = (IAsyncResult)myHttpWebRequest.BeginGetResponse( new AsyncCallback(RespCallback), myRequestState);
ThreadPool.RegisterWaitForSingleObject(result.AsyncWaitHandle, new WaitOrTimerCallback(TimeoutCallback), myHttpWebRequest, DefaultTimeout, true );
allDone.WaitOne();
myRequestState.response.Close();
}
catch (WebException e)
{
Console.WriteLine( " \nMain Exception raised! " );
Console.WriteLine( " \nMessage:{0} " , e.Message);
Console.WriteLine( " \nStatus:{0} " , e.Status);
Console.WriteLine( " Press any key to continue.......... " );
}
catch (Exception e)
{
Console.WriteLine( " \nMain Exception raised! " );
Console.WriteLine( " Source :{0} " , e.Source);
Console.WriteLine( " Message :{0} " , e.Message);
Console.WriteLine( " Press any key to continue.......... " );
Console.Read();
}
}
private static void RespCallback(IAsyncResult asynchronousResult)
{
try
{
// State of request is asynchronous.
RequestState myRequestState = (RequestState)asynchronousResult.AsyncState;
HttpWebRequest myHttpWebRequest = myRequestState.request;
myRequestState.response = (HttpWebResponse)myHttpWebRequest.EndGetResponse(asynchronousResult);
// Read the response into a Stream object.
Stream responseStream = myRequestState.response.GetResponseStream();
myRequestState.streamResponse = responseStream;
// Begin the Reading of the contents of the HTML page and print it to the console.
IAsyncResult asynchronousInputRead = responseStream.BeginRead(myRequestState.BufferRead, 0 , BUFFER_SIZE, new AsyncCallback(ReadCallBack), myRequestState);
return ;
}
catch (WebException e)
{
Console.WriteLine( " \nRespCallback Exception raised! " );
Console.WriteLine( " \nMessage:{0} " , e.Message);
Console.WriteLine( " \nStatus:{0} " , e.Status);
}
allDone.Set();
}
private static void ReadCallBack(IAsyncResult asyncResult)
{
try
{
RequestState myRequestState = (RequestState)asyncResult.AsyncState;
Stream responseStream = myRequestState.streamResponse;
int read = responseStream.EndRead(asyncResult);
// Read the HTML page and then print it to the console.
if (read > 0 )
{
myRequestState.requestData.Append(Encoding.ASCII.GetString(myRequestState.BufferRead, 0 , read));
IAsyncResult asynchronousResult = responseStream.BeginRead(myRequestState.BufferRead, 0 , BUFFER_SIZE, new AsyncCallback(ReadCallBack), myRequestState);
return ;
}
else
{
Console.WriteLine( " \nThe contents of the Html page are : " );
if (myRequestState.requestData.Length > 1 )
{
string stringContent;
stringContent = myRequestState.requestData.ToString();
Console.WriteLine( " \t " );
Console.WriteLine( " \t " );
Console.WriteLine( " \t " );
Console.WriteLine( " \t " );
Console.WriteLine(stringContent);
Console.WriteLine( " \t " );
Console.WriteLine( " \t " );
}
Console.WriteLine( " Press any key to continue.......... " );
Console.ReadLine();
responseStream.Close();
}
}
catch (WebException e)
{
Console.WriteLine( " \nReadCallBack Exception raised! " );
Console.WriteLine( " \nMessage:{0} " , e.Message);
Console.WriteLine( " \nStatus:{0} " , e.Status);
}
allDone.Set();
}
}
}
using System.IO;
using System.Net;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace Test
{
public class RequestState
{
const int BUFFER_SIZE = 1024 ;
public StringBuilder requestData;
public byte [] BufferRead;
public HttpWebRequest request;
public HttpWebResponse response;
public Stream streamResponse;
public RequestState()
{
BufferRead = new byte [BUFFER_SIZE];
requestData = new StringBuilder( "" );
request = null ;
streamResponse = null ;
}
}
public class HttpWebRequest_BeginGetResponse
{
public static ManualResetEvent allDone = new ManualResetEvent( false );
const int BUFFER_SIZE = 1024 ;
const int DefaultTimeout = 2 * 60 * 1000 ; // 2 minutes timeout
// Abort the request if the timer fires.
private static void TimeoutCallback( object state, bool timedOut)
{
if (timedOut)
{
HttpWebRequest request = state as HttpWebRequest;
if (request != null )
{
request.Abort();
}
}
}
public void Read()
{
try
{
// Create a HttpWebrequest object to the desired URL.
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create( @" http://passport.cnblogs.com/login.aspx " );
RequestState myRequestState = new RequestState();
myRequestState.request = myHttpWebRequest;
IAsyncResult result = (IAsyncResult)myHttpWebRequest.BeginGetResponse( new AsyncCallback(RespCallback), myRequestState);
ThreadPool.RegisterWaitForSingleObject(result.AsyncWaitHandle, new WaitOrTimerCallback(TimeoutCallback), myHttpWebRequest, DefaultTimeout, true );
allDone.WaitOne();
myRequestState.response.Close();
}
catch (WebException e)
{
Console.WriteLine( " \nMain Exception raised! " );
Console.WriteLine( " \nMessage:{0} " , e.Message);
Console.WriteLine( " \nStatus:{0} " , e.Status);
Console.WriteLine( " Press any key to continue.......... " );
}
catch (Exception e)
{
Console.WriteLine( " \nMain Exception raised! " );
Console.WriteLine( " Source :{0} " , e.Source);
Console.WriteLine( " Message :{0} " , e.Message);
Console.WriteLine( " Press any key to continue.......... " );
Console.Read();
}
}
private static void RespCallback(IAsyncResult asynchronousResult)
{
try
{
// State of request is asynchronous.
RequestState myRequestState = (RequestState)asynchronousResult.AsyncState;
HttpWebRequest myHttpWebRequest = myRequestState.request;
myRequestState.response = (HttpWebResponse)myHttpWebRequest.EndGetResponse(asynchronousResult);
// Read the response into a Stream object.
Stream responseStream = myRequestState.response.GetResponseStream();
myRequestState.streamResponse = responseStream;
// Begin the Reading of the contents of the HTML page and print it to the console.
IAsyncResult asynchronousInputRead = responseStream.BeginRead(myRequestState.BufferRead, 0 , BUFFER_SIZE, new AsyncCallback(ReadCallBack), myRequestState);
return ;
}
catch (WebException e)
{
Console.WriteLine( " \nRespCallback Exception raised! " );
Console.WriteLine( " \nMessage:{0} " , e.Message);
Console.WriteLine( " \nStatus:{0} " , e.Status);
}
allDone.Set();
}
private static void ReadCallBack(IAsyncResult asyncResult)
{
try
{
RequestState myRequestState = (RequestState)asyncResult.AsyncState;
Stream responseStream = myRequestState.streamResponse;
int read = responseStream.EndRead(asyncResult);
// Read the HTML page and then print it to the console.
if (read > 0 )
{
myRequestState.requestData.Append(Encoding.ASCII.GetString(myRequestState.BufferRead, 0 , read));
IAsyncResult asynchronousResult = responseStream.BeginRead(myRequestState.BufferRead, 0 , BUFFER_SIZE, new AsyncCallback(ReadCallBack), myRequestState);
return ;
}
else
{
Console.WriteLine( " \nThe contents of the Html page are : " );
if (myRequestState.requestData.Length > 1 )
{
string stringContent;
stringContent = myRequestState.requestData.ToString();
Console.WriteLine( " \t " );
Console.WriteLine( " \t " );
Console.WriteLine( " \t " );
Console.WriteLine( " \t " );
Console.WriteLine(stringContent);
Console.WriteLine( " \t " );
Console.WriteLine( " \t " );
}
Console.WriteLine( " Press any key to continue.......... " );
Console.ReadLine();
responseStream.Close();
}
}
catch (WebException e)
{
Console.WriteLine( " \nReadCallBack Exception raised! " );
Console.WriteLine( " \nMessage:{0} " , e.Message);
Console.WriteLine( " \nStatus:{0} " , e.Status);
}
allDone.Set();
}
}
}