Export (0) Print
Expand All

HttpWebRequest.EndGetResponse Method

Ends an asynchronous request to an Internet resource.

[Visual Basic]
Overrides Public Function EndGetResponse( _
   ByVal asyncResult As IAsyncResult _
) As WebResponse
[C#]
public override WebResponse EndGetResponse(
 IAsyncResult asyncResult
);
[C++]
public: WebResponse* EndGetResponse(
 IAsyncResult* asyncResult
);
[JScript]
public override function EndGetResponse(
   asyncResult : IAsyncResult
) : WebResponse;

Parameters

asyncResult
The pending request for a response.

Return Value

A WebResponse containing the response from the Internet resource.

Exceptions

Exception Type Condition
ArgumentNullException asyncResult is a null reference (Nothing in Visual Basic).
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.

Remarks

The EndGetResponse method completes an asynchronous request for an Internet resource that was started by calling BeginGetResponse.

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.

Example

[Visual Basic, C#, C++] The following example uses the EndGetResponse to end an asynchronous request for an internet resource.

[Visual Basic] 
Try
  ' Create a new HttpWebrequest object to the desired URL.
  Dim myHttpWebRequest1 As HttpWebRequest = CType(WebRequest.Create("http://www.contoso.com"), HttpWebRequest)
  
  ' Create an instance of the RequestState and assign the previous myHttpWebRequest1
  ' object to it's request field.  
  Dim myRequestState As New RequestState()
  myRequestState.request = myHttpWebRequest1
  
  ' Start the Asynchronous request.
  Dim result As IAsyncResult = CType(myHttpWebRequest1.BeginGetResponse(AddressOf RespCallback, myRequestState), IAsyncResult)
  allDone.WaitOne()

  ' Release the HttpWebResponse resource.
  myRequestState.response.Close()
Catch e As WebException
  Console.WriteLine(ControlChars.Cr + "Exception raised!")
  Console.WriteLine(ControlChars.Cr + "Message:{0}", e.Message)
  Console.WriteLine(ControlChars.Cr + "Status:{0}", e.Status)
  Console.WriteLine("Press any key to continue..........")

Catch e As Exception
  Console.WriteLine(ControlChars.Cr + "Exception raised!")
  Console.WriteLine("Source :{0} ", e.Source)
  Console.WriteLine("Message : {0}", e.Message)
  Console.WriteLine("Press any key to continue..........")
  Console.Read()
End Try
  End Sub ' Main
  
  Private Shared Sub RespCallback(asynchronousResult As IAsyncResult)
Try
  ' State of request is asynchronous.
  Dim myRequestState As RequestState = CType(asynchronousResult.AsyncState, RequestState)
  Dim myHttpWebRequest2 As HttpWebRequest = myRequestState.request
  myRequestState.response = CType(myHttpWebRequest2.EndGetResponse(asynchronousResult), HttpWebResponse)
  ' Read the response into a Stream object.
  Dim responseStream As Stream = myRequestState.response.GetResponseStream()
  myRequestState.streamResponse = responseStream
  ' Begin the Reading of the contents of the HTML page and print it to the console.
  Dim asynchronousInputRead As IAsyncResult = responseStream.BeginRead(myRequestState.BufferRead, 0, BUFFER_SIZE, AddressOf ReadCallBack, myRequestState)
Catch e As WebException
  Console.WriteLine(ControlChars.Cr + "Exception raised!")
  Console.WriteLine(ControlChars.Cr + "Message:{0}", e.Message)
  Console.WriteLine(ControlChars.Cr + "Status:{0}", e.Status)
End Try 
  End Sub ' RespCallback
  
  Private Shared Sub ReadCallBack(asyncResult As IAsyncResult)
Try
  Dim myRequestState As RequestState = CType(asyncResult.AsyncState, RequestState)
  Dim responseStream As Stream = myRequestState.streamResponse
  Dim read As Integer = responseStream.EndRead(asyncResult)
  '  Read the HTML page and then print it to the console.
  If read > 0 Then
    myRequestState.requestData.Append(Encoding.ASCII.GetString(myRequestState.BufferRead, 0, read))
    Dim asynchronousResult As IAsyncResult = responseStream.BeginRead(myRequestState.BufferRead, 0, BUFFER_SIZE, AddressOf ReadCallBack, myRequestState)
  Else
    Console.WriteLine(ControlChars.Cr + "The contents of the Html page are : ")
    If myRequestState.requestData.Length > 1 Then
      Dim stringContent As String
      stringContent = myRequestState.requestData.ToString()
      Console.WriteLine(stringContent)
    End If
    Console.WriteLine("Press any key to continue..........")
    Console.ReadLine()
    responseStream.Close()
    allDone.Set()
  End If
Catch e As WebException
  Console.WriteLine(ControlChars.Cr + "Exception raised!")
  Console.WriteLine(ControlChars.Cr + "Message:{0}", e.Message)
  Console.WriteLine(ControlChars.Cr + "Status:{0}", e.Status)
End Try 
  End Sub ' ReadCallBack

[C#] 
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);
  
}

  }

[C++] 
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,
         new AsyncCallback(0, ReadCallBack),
         myRequestState);
   } catch (WebException* e) {
      Console::WriteLine(S"\nException raised!");
      Console::WriteLine(S"\nMessage: {0}", e->Message);
      Console::WriteLine(S"\nStatus: {0}", __box( 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,
            new AsyncCallback(0,ReadCallBack),
            myRequestState);
      } else {
         Console::WriteLine(S"\nThe contents of the Html page are : ");
         if (myRequestState->requestData->Length>1) {
            String* stringContent;
            stringContent = myRequestState->requestData->ToString();
            Console::WriteLine(stringContent);
         }
         Console::WriteLine(S"Press any key to continue..........");
         Console::ReadLine();

         responseStream->Close();
         allDone->Set();
      }
   } catch (WebException* e) {
      Console::WriteLine(S"\nException raised!");
      Console::WriteLine(S"\nMessage: {0}", e->Message);
      Console::WriteLine(S"\nStatus: {0}", __box( e->Status));
   }
}
};

int main() {
try {
   // Create a HttpWebrequest object to the desired URL.
   HttpWebRequest* myHttpWebRequest1 = 
      dynamic_cast<HttpWebRequest*>(WebRequest::Create(S"http://www.contoso.com"));

   // Create an instance of the RequestState and assign the previous myHttpWebRequest1
   // object to its request field.
   RequestState* myRequestState = new RequestState();
   myRequestState->request = myHttpWebRequest1;

   // Start the asynchronous request.
   IAsyncResult* result=dynamic_cast<IAsyncResult*>(
      myHttpWebRequest1->BeginGetResponse(
         new AsyncCallback(0, HttpWebRequest_BeginGetResponse::RespCallback),
         myRequestState));

   HttpWebRequest_BeginGetResponse::allDone->WaitOne();

   // Release the HttpWebResponse resource.
   myRequestState->response->Close();
} catch (WebException* e) {
   Console::WriteLine(S"\nException raised!");
   Console::WriteLine(S"\nMessage: {0}", e->Message);
   Console::WriteLine(S"\nStatus: {0}", __box( e->Status));
   Console::WriteLine(S"Press any key to continue..........");
} catch (Exception* e) {
   Console::WriteLine(S"\nException raised!");
   Console::WriteLine(S"Source : {0} " , e->Source);
   Console::WriteLine(S"Message : {0} " , e->Message);
   Console::WriteLine(S"Press any key to continue..........");
   Console::Read();
}
}

[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button Language Filter in the upper-left corner of the page.

Requirements

Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family, .NET Compact Framework, Common Language Infrastructure (CLI) Standard

See Also

HttpWebRequest Class | HttpWebRequest Members | System.Net Namespace

Show:
© 2014 Microsoft