HttpWebRequest.EndGetResponse(IAsyncResult) 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
인터넷 리소스에 대한 비동기 요청을 종료합니다.
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
응답에 대해 보류된 요청입니다.
반환
인터넷 리소스로부터의 응답이 들어 있는 WebResponse입니다.
예외
asyncResult
이(가) null
인 경우
현재 인스턴스에서 BeginGetResponse(AsyncCallback, Object)을 호출한 결과 asyncResult
가 반환되지 않은 경우
예제
다음 코드 예제에서는 메서드를 EndGetResponse 사용하여 인터넷 리소스에 대한 비동기 요청을 종료합니다.
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
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
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
설명
메서드는 EndGetResponse 메서드를 호출 BeginGetResponse 하여 시작된 인터넷 리소스에 대한 비동기 요청을 완료합니다.
주의
메서드를 Close 호출하여 스트림을 닫고 연결을 해제해야 합니다. 이렇게 하지 않으면 연결에서 실행 되도록 애플리케이션에 발생할 수 있습니다.
참고
애플리케이션에 네트워크 추적을 사용하도록 설정하면 이 멤버에서 추적 정보를 출력합니다. 자세한 내용은 .NET Framework의 네트워크 추적을 참조하세요.
적용 대상
.NET
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기