HttpWebRequest::EndGetResponse Method (IAsyncResult^)
Ends an asynchronous request to an Internet resource.
Assembly: System (in System.dll)
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.
| Exception | Condition |
|---|---|
| ArgumentNullException | asyncResult is null. |
| 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 | |
| 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 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(); } }
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1

