HttpWebRequest.EndGetResponse メソッド
インターネット リソースへの非同期要求を終了します。
Overrides Public Function EndGetResponse( _
ByVal asyncResult As IAsyncResult _) As WebResponse
[C#]
public override WebResponse EndGetResponse(IAsyncResultasyncResult);
[C++]
public: WebResponse* EndGetResponse(IAsyncResult* asyncResult);
[JScript]
public override function EndGetResponse(
asyncResult : IAsyncResult) : WebResponse;
パラメータ
- asyncResult
応答の保留中の要求。
戻り値
インターネット リソースからの応答を格納している WebResponse 。
例外
例外の種類 | 条件 |
---|---|
ArgumentNullException | asyncResult が null 参照 (Visual Basic では Nothing) です。 |
InvalidOperationException | このメソッドは、 asyncResult を使用して既に呼び出されています。
または ContentLength プロパティが 0 を超えていますが、データが要求ストリームに書き込まれていません。 |
WebException | Abort は既に呼び出されました。
または 要求の処理中にエラーが発生しました。 |
ArgumentException | 現在のインスタンスによって、 BeginGetResponse への呼び出しから asyncResult が返されませんでした。 |
解説
EndGetResponse メソッドは、 BeginGetResponse を呼び出して開始したインターネット リソースの非同期要求を完了します。
注意 Close メソッドを呼び出して、ストリームを閉じて接続を解放する必要があります。この操作を行わないと、アプリケーションで接続が不足することがあります。
使用例
[Visual Basic, C#, C++] EndGetResponse を使用して、インターネット リソースに対する非同期要求を終了する例を次に示します。
Try
' Create a new HttpWebrequest object to the desired URL.
Dim myHttpWebRequest1 As HttpWebRequest = CType(WebRequest.Create("https://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("https://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"https://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] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard