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.WebResponseA 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.
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); } }
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

