次の方法で共有


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

参照

HttpWebRequest クラス | HttpWebRequest メンバ | System.Net 名前空間