相关文章推荐
帅气的闹钟  ·  国家民族事务委员会·  1 年前    · 
腹黑的西装  ·  LLM系列 | 02: ...·  2 年前    · 
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

下面的代码示例使用 EndGetResponse 该方法结束对 Internet 资源的异步请求。

static void RespCallback( IAsyncResult^ asynchronousResult ) // 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 ) 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 ); 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() // 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(); // 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) // 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) 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); 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); ' 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) ' 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) 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) 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 该方法启动的 Internet 资源的异步请求。

必须调用 Close 该方法以关闭流并释放连接。 未能执行此操作可能会导致应用程序耗尽连接。

当你在应用程序中启用网络跟踪后,此成员将输出跟踪信息。 有关详细信息,请参阅 .NET Framework中的网络跟踪