.NET Framework Class Library
HttpWebRequest..::.EndGetResponse Method

Ends an asynchronous request to an Internet resource.

Namespace:  System.Net
Assembly:  System (in System.dll)
Syntax

Visual Basic (Declaration)
Public Overrides Function EndGetResponse ( _
    asyncResult As IAsyncResult _
) As WebResponse
Visual Basic (Usage)
Dim instance As HttpWebRequest
Dim asyncResult As IAsyncResult
Dim returnValue As WebResponse

returnValue = instance.EndGetResponse(asyncResult)
C#
public override WebResponse EndGetResponse(
    IAsyncResult asyncResult
)
Visual C++
public:
virtual WebResponse^ EndGetResponse(
    IAsyncResult^ asyncResult
) override
JScript
public override function EndGetResponse(
    asyncResult : IAsyncResult
) : WebResponse

Parameters

asyncResult
Type: System..::.IAsyncResult
The pending request for a response.

Return Value

Type: System.Net..::.WebResponse
A WebResponse that contains the response from the Internet resource.
Exceptions

ExceptionCondition
ArgumentNullException

asyncResult is nullNothingnullptra null reference (Nothing in Visual Basic).

InvalidOperationException

This method was called previously using asyncResult.

-or-

The ContentLength property is greater than 0 but the data has not been written to the request stream.

WebException

Abort was previously called.

-or-

An error occurred while processing the request.

ArgumentException

asyncResult was not returned by the current instance from a call to BeginGetResponse.

Remarks

The EndGetResponse method completes an asynchronous request for an Internet resource that was started by calling the BeginGetResponse method.

Caution noteCaution:

You must call the Close method to close the stream and release the connection. Failure to do so may cause your application to run out of connections.

NoteNote:

This member outputs trace information when you enable network tracing in your application. For more information, see Network Tracing.

Examples

The following code example uses the EndGetResponse method to end an asynchronous request for an Internet resource.

Visual Basic
  Try
    ' Create a new HttpWebrequest object to the desired URL.
    Dim myHttpWebRequest1 As HttpWebRequest = CType(WebRequest.Create("http://www.contoso.com"), HttpWebRequest)

    ' Create an instance of the RequestState and assign the previous myHttpWebRequest1
    ' object to it's request field.  
    Dim myRequestState As New RequestState()
    myRequestState.request = myHttpWebRequest1

    ' Start the Asynchronous request.
    Dim result As IAsyncResult = CType(myHttpWebRequest1.BeginGetResponse(AddressOf RespCallback, myRequestState), IAsyncResult)
    allDone.WaitOne()

    ' Release the HttpWebResponse resource.
    myRequestState.response.Close()
  Catch e As WebException
    Console.WriteLine(ControlChars.Cr + "Exception raised!")
    Console.WriteLine(ControlChars.Cr + "Message:{0}", e.Message)
    Console.WriteLine(ControlChars.Cr + "Status:{0}", e.Status)
    Console.WriteLine("Press any key to continue..........")

  Catch e As Exception
    Console.WriteLine(ControlChars.Cr + "Exception raised!")
    Console.WriteLine("Source :{0} ", e.Source)
    Console.WriteLine("Message : {0}", e.Message)
    Console.WriteLine("Press any key to continue..........")
    Console.Read()
  End Try
End Sub ' Main

Private Shared Sub RespCallback(asynchronousResult As IAsyncResult)
  Try
    ' State of request is asynchronous.
    Dim myRequestState As RequestState = CType(asynchronousResult.AsyncState, RequestState)
    Dim myHttpWebRequest2 As HttpWebRequest = myRequestState.request
    myRequestState.response = CType(myHttpWebRequest2.EndGetResponse(asynchronousResult), HttpWebResponse)
    ' Read the response into a Stream object.
    Dim responseStream As Stream = myRequestState.response.GetResponseStream()
    myRequestState.streamResponse = responseStream
    ' Begin the Reading of the contents of the HTML page and print it to the console.
    Dim asynchronousInputRead As IAsyncResult = responseStream.BeginRead(myRequestState.BufferRead, 0, BUFFER_SIZE, AddressOf ReadCallBack, myRequestState)
  Catch e As WebException
    Console.WriteLine(ControlChars.Cr + "Exception raised!")
    Console.WriteLine(ControlChars.Cr + "Message:{0}", e.Message)
    Console.WriteLine(ControlChars.Cr + "Status:{0}", e.Status)
  End Try 
End Sub ' RespCallback

Private Shared Sub ReadCallBack(asyncResult As IAsyncResult)
  Try
    Dim myRequestState As RequestState = CType(asyncResult.AsyncState, RequestState)
    Dim responseStream As Stream = myRequestState.streamResponse
    Dim read As Integer = responseStream.EndRead(asyncResult)
    '  Read the HTML page and then print it to the console.
    If read > 0 Then
      myRequestState.requestData.Append(Encoding.ASCII.GetString(myRequestState.BufferRead, 0, read))
      Dim asynchronousResult As IAsyncResult = responseStream.BeginRead(myRequestState.BufferRead, 0, BUFFER_SIZE, AddressOf ReadCallBack, myRequestState)
    Else
      Console.WriteLine(ControlChars.Cr + "The contents of the Html page are : ")
      If myRequestState.requestData.Length > 1 Then
        Dim stringContent As String
        stringContent = myRequestState.requestData.ToString()
        Console.WriteLine(stringContent)
      End If
      Console.WriteLine("Press any key to continue..........")
      Console.ReadLine()
      responseStream.Close()
      allDone.Set()
    End If
  Catch e As WebException
    Console.WriteLine(ControlChars.Cr + "Exception raised!")
    Console.WriteLine(ControlChars.Cr + "Message:{0}", e.Message)
    Console.WriteLine(ControlChars.Cr + "Status:{0}", e.Status)
  End Try 
End Sub ' ReadCallBack
C#
  try
  {      


    // Create a HttpWebrequest object to the desired URL.
    HttpWebRequest myHttpWebRequest1= (HttpWebRequest)WebRequest.Create("http://www.contoso.com");

    // Create an instance of the RequestState and assign the previous myHttpWebRequest1
    // object to it's request field.  
    RequestState myRequestState = new RequestState();  
    myRequestState.request = myHttpWebRequest1;


    // Start the asynchronous request.
    IAsyncResult result=
      (IAsyncResult) myHttpWebRequest1.BeginGetResponse(new AsyncCallback(RespCallback),myRequestState);

    allDone.WaitOne();

    // Release the HttpWebResponse resource.
    myRequestState.response.Close();
  }
  catch(WebException e)
  {
    Console.WriteLine("\nException 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("\nException 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  myHttpWebRequest2=myRequestState.request;
    myRequestState.response = (HttpWebResponse) myHttpWebRequest2.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);
  }
  catch(WebException e)
  {
    Console.WriteLine("\nException raised!");
    Console.WriteLine("\nMessage:{0}",e.Message);
    Console.WriteLine("\nStatus:{0}",e.Status);

  }
}
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);
  }
  else
  {
    Console.WriteLine("\nThe contents of the Html page are : ");
    if(myRequestState.requestData.Length>1)
    {
      string stringContent;
      stringContent = myRequestState.requestData.ToString();
      Console.WriteLine(stringContent);
    }
    Console.WriteLine("Press any key to continue..........");
    Console.ReadLine();

    responseStream.Close();
    allDone.Set();

  }

  }
  catch(WebException e)
  {
    Console.WriteLine("\nException raised!");
    Console.WriteLine("\nMessage:{0}",e.Message);
    Console.WriteLine("\nStatus:{0}",e.Status);

  }

}
Visual C++
   static void RespCallback( IAsyncResult^ asynchronousResult )
   {
      try
      {

         // State of request is asynchronous.
         RequestState^ myRequestState = dynamic_cast<RequestState^>(asynchronousResult->AsyncState);
         HttpWebRequest^ myHttpWebRequest2 = myRequestState->request;
         myRequestState->response = dynamic_cast<HttpWebResponse^>(myHttpWebRequest2->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, gcnew AsyncCallback( ReadCallBack ), myRequestState );
      }
      catch ( WebException^ e ) 
      {
         Console::WriteLine( "\nException raised!" );
         Console::WriteLine( "\nMessage: {0}", e->Message );
         Console::WriteLine( "\nStatus: {0}", e->Status );
      }

   }

   static void ReadCallBack( IAsyncResult^ asyncResult )
   {
      try
      {
         RequestState^ myRequestState = dynamic_cast<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, gcnew AsyncCallback( ReadCallBack ), myRequestState );
         }
         else
         {
            Console::WriteLine( "\nThe contents of the Html page are : " );
            if ( myRequestState->requestData->Length > 1 )
            {
               String^ stringContent;
               stringContent = myRequestState->requestData->ToString();
               Console::WriteLine( stringContent );
            }
            Console::WriteLine( "Press any key to continue.........." );
            Console::ReadLine();
            responseStream->Close();
            allDone->Set();
         }
      }
      catch ( WebException^ e ) 
      {
         Console::WriteLine( "\nException raised!" );
         Console::WriteLine( "\nMessage: {0}", e->Message );
         Console::WriteLine( "\nStatus: {0}", e->Status );
      }

   }

};

int main()
{
   try
   {

      // Create a HttpWebrequest object to the desired URL.
      HttpWebRequest^ myHttpWebRequest1 = dynamic_cast<HttpWebRequest^>(WebRequest::Create( "http://www.contoso.com" ));

      // Create an instance of the RequestState and assign the previous myHttpWebRequest1
      // object to its request field.
      RequestState^ myRequestState = gcnew RequestState;
      myRequestState->request = myHttpWebRequest1;

      // Start the asynchronous request.
      IAsyncResult^ result = dynamic_cast<IAsyncResult^>(myHttpWebRequest1->BeginGetResponse( gcnew AsyncCallback( HttpWebRequest_BeginGetResponse::RespCallback ), myRequestState ));
      HttpWebRequest_BeginGetResponse::allDone->WaitOne();

      // Release the HttpWebResponse resource.
      myRequestState->response->Close();
   }
   catch ( WebException^ e ) 
   {
      Console::WriteLine( "\nException 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( "\nException raised!" );
      Console::WriteLine( "Source : {0} ", e->Source );
      Console::WriteLine( "Message : {0} ", e->Message );
      Console::WriteLine( "Press any key to continue.........." );
      Console::Read();
   }

}

CPP_OLD
   static void RespCallback(IAsyncResult* asynchronousResult) {
      try {
         // State of request is asynchronous.
         RequestState* myRequestState =
            dynamic_cast<RequestState*> (asynchronousResult->AsyncState);
         HttpWebRequest*  myHttpWebRequest2=myRequestState->request;
         myRequestState->response = dynamic_cast<HttpWebResponse*> 
            (myHttpWebRequest2->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(0, ReadCallBack),
            myRequestState);
      } catch (WebException* e) {
         Console::WriteLine(S"\nException raised!");
         Console::WriteLine(S"\nMessage: {0}", e->Message);
         Console::WriteLine(S"\nStatus: {0}", __box( e->Status));
      }
   }

   static  void ReadCallBack(IAsyncResult* asyncResult) {
      try {
         RequestState* myRequestState = dynamic_cast<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(0,ReadCallBack),
               myRequestState);
         } else {
            Console::WriteLine(S"\nThe contents of the Html page are : ");
            if (myRequestState->requestData->Length>1) {
               String* stringContent;
               stringContent = myRequestState->requestData->ToString();
               Console::WriteLine(stringContent);
            }
            Console::WriteLine(S"Press any key to continue..........");
            Console::ReadLine();

            responseStream->Close();
            allDone->Set();
         }
      } catch (WebException* e) {
         Console::WriteLine(S"\nException raised!");
         Console::WriteLine(S"\nMessage: {0}", e->Message);
         Console::WriteLine(S"\nStatus: {0}", __box( e->Status));
      }
   }
};

int main() {
   try {
      // Create a HttpWebrequest object to the desired URL.
      HttpWebRequest* myHttpWebRequest1 = 
         dynamic_cast<HttpWebRequest*>(WebRequest::Create(S"http://www.contoso.com"));

      // Create an instance of the RequestState and assign the previous myHttpWebRequest1
      // object to its request field.
      RequestState* myRequestState = new RequestState();
      myRequestState->request = myHttpWebRequest1;

      // Start the asynchronous request.
      IAsyncResult* result=dynamic_cast<IAsyncResult*>(
         myHttpWebRequest1->BeginGetResponse(
            new AsyncCallback(0, HttpWebRequest_BeginGetResponse::RespCallback),
            myRequestState));

      HttpWebRequest_BeginGetResponse::allDone->WaitOne();

      // Release the HttpWebResponse resource.
      myRequestState->response->Close();
   } catch (WebException* e) {
      Console::WriteLine(S"\nException raised!");
      Console::WriteLine(S"\nMessage: {0}", e->Message);
      Console::WriteLine(S"\nStatus: {0}", __box( e->Status));
      Console::WriteLine(S"Press any key to continue..........");
   } catch (Exception* e) {
      Console::WriteLine(S"\nException raised!");
      Console::WriteLine(S"Source : {0} " , e->Source);
      Console::WriteLine(S"Message : {0} " , e->Message);
      Console::WriteLine(S"Press any key to continue..........");
      Console::Read();
   }
}
Platforms

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Version Information

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 3.5, 2.0, 1.0
See Also

Reference

Tags :


Page view tracker