HttpWebRequest::EndGetResponse Method
Ends an asynchronous request to an Internet resource.
Namespace: System.Net
Assembly: System (in System.dll)
Parameters
- asyncResult
- Type: System::IAsyncResult
The pending request for a response.
Return Value
Type: System.Net::WebResponseA WebResponse that contains the response from the Internet resource.
| Exception | Condition |
|---|---|
| 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 |
|---|
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. |
Note |
|---|
This member outputs trace information when you enable network tracing in your application. For more information, see Network Tracing. |
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(); } }
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.
Caution
Note