Export (0) Print
Expand All

HttpWebRequest::EndGetResponse Method

Ends an asynchronous request to an Internet resource.

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

public:
virtual WebResponse^ EndGetResponse(
	IAsyncResult^ asyncResult
) override

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.

ExceptionCondition
ArgumentNullException

asyncResult is nullptr.

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.

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 in the .NET Framework.

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

   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();
   }

}

.NET Framework

Supported in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Portable Class Library

Supported in: Portable Class Library

.NET for Windows Store apps

Supported in: Windows 8

.NET for Windows Phone apps

Supported in: Windows Phone 8.1, Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Show:
© 2014 Microsoft