EndGetResponse Method
Collapse the table of content
Expand the table of content

HttpWebRequest.EndGetResponse Method

[ This article is for Windows Phone 8 developers. If you’re developing for Windows 10, see the latest documentation. ]

Ends an asynchronous request to an Internet resource.

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

public override WebResponse EndGetResponse(
	IAsyncResult asyncResult
)

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 null.

InvalidOperationException

This method was called previously using asyncResult.

NotImplementedException

This method is not implemented.

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 WebResponse method to close the stream and release the connection. Failure to do so may cause your application to run out of connections.


public class RequestState
{
  // This class stores the State of the request.
  const int BUFFER_SIZE = 1024;
  public StringBuilder requestData;
  public byte[] BufferRead;
  public HttpWebRequest request;
  public HttpWebResponse response;
  public Stream streamResponse;

  public RequestState()
  {
    BufferRead = new byte[BUFFER_SIZE];
    requestData = new StringBuilder("");
    request = null;
    streamResponse = null;
  }
}

public class Example
{

  public static ManualResetEvent allDone= new ManualResetEvent(false);
  const int BUFFER_SIZE = 1024;

  public static void Demo(System.Windows.Controls.TextBlock outputBlock)
  {
      try
      {
          System.Uri uri = new Uri("http://www.contoso.com");

          // Create a HttpWebrequest object to the desired URL.
          HttpWebRequest myHttpWebRequest1= (HttpWebRequest)WebRequest.Create(uri);

          // 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)
      {
          outputBlock.Text += "\nException raised!\n";
          outputBlock.Text += "Message: ";
          outputBlock.Text += e.Message;
          outputBlock.Text += "\nStatus: ";
          outputBlock.Text += e.Status;
          outputBlock.Text += "\n";
      }
      catch(Exception e)
      {
          outputBlock.Text += "\nException raised!\n";
          outputBlock.Text += "\nMessage: ";
          outputBlock.Text += e.Message;
          outputBlock.Text += "\n";
      }
  }

  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)
      {
          // Need to handle the exception
          // ...

          Debug.WriteLine(e.Message);
      }
  }

  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 do something with it
          if (read > 0)
          {
              myRequestState.requestData.Append(Encoding.UTF8.GetString(myRequestState.BufferRead, 0, read));
              IAsyncResult asynchronousResult = responseStream.BeginRead( myRequestState.BufferRead, 0, BUFFER_SIZE, new AsyncCallback(ReadCallBack), myRequestState);
          }
          else
          {
              if(myRequestState.requestData.Length>1)
              {
                  string stringContent;
                  stringContent = myRequestState.requestData.ToString();
                  // do something with the response stream here
              }

              responseStream.Close();
              allDone.Set();     
          }
      }
      catch(WebException e)
      {
          // Need to handle the exception
          // ...

          Debug.WriteLine(e.Message);
      }
  }


Windows Phone OS

Supported in: 8.1, 8.0, 7.1, 7.0

Windows Phone

Show:
© 2017 Microsoft