HttpWebRequest.EndGetResponse(IAsyncResult) HttpWebRequest.EndGetResponse(IAsyncResult) HttpWebRequest.EndGetResponse(IAsyncResult) HttpWebRequest.EndGetResponse(IAsyncResult) Method

정의

인터넷 리소스에 대한 비동기 요청을 종료합니다.Ends an asynchronous request to an Internet resource.

public:
 override System::Net::WebResponse ^ EndGetResponse(IAsyncResult ^ asyncResult);
public override System.Net.WebResponse EndGetResponse (IAsyncResult asyncResult);
override this.EndGetResponse : IAsyncResult -> System.Net.WebResponse
Public Overrides Function EndGetResponse (asyncResult As IAsyncResult) As WebResponse

매개 변수

asyncResult
IAsyncResult IAsyncResult IAsyncResult IAsyncResult

응답에 대해 보류된 요청입니다.The pending request for a response.

반환

인터넷 리소스로부터의 응답이 들어 있는 WebResponse입니다.A WebResponse that contains the response from the Internet resource.

예외

이 메서드가 asyncResult.를 사용하여 이미 호출되었습니다.This method was called previously using asyncResult.

또는-or- ContentLength 속성이 0보다 큰데 데이터를 요청 스트림에 쓰지 않은 경우The ContentLength property is greater than 0 but the data has not been written to the request stream.

Abort()가 이전에 호출되었습니다.Abort() was previously called.

또는-or- 이 요청을 처리하는 동안 오류가 발생했습니다.An error occurred while processing the request.

현재 인스턴스에서 BeginGetResponse(AsyncCallback, Object)을 호출한 결과 asyncResult가 반환되지 않은 경우asyncResult was not returned by the current instance from a call to BeginGetResponse(AsyncCallback, Object).

예제

다음 코드 예제에서는 EndGetResponse 인터넷 리소스에 대 한 비동기 요청을 종료 하는 방법입니다.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();
   }

}

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

}
  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

설명

합니다 EndGetResponse 메서드를 호출 하 여 시작 된 인터넷 리소스에 대 한 비동기 요청을 완료 합니다 BeginGetResponse 메서드.The EndGetResponse method completes an asynchronous request for an Internet resource that was started by calling the BeginGetResponse method.

주의

호출 해야 합니다는 Close 방법 스트림을 닫고 연결을 해제 합니다.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.

참고

애플리케이션에 네트워크 추적을 사용하도록 설정하면 이 멤버에서 추적 정보를 출력합니다.This member outputs trace information when you enable network tracing in your application. 자세한 내용은 .NET Framework의 네트워크 추적합니다.For more information, see Network Tracing in the .NET Framework.

적용 대상