HttpWebRequest.EndGetRequestStream メソッド
データを書き込むために使用する Stream インスタンスの非同期要求を終了します。
Overrides Public Function EndGetRequestStream( _
ByVal asyncResult As IAsyncResult _) As Stream
[C#]
public override Stream EndGetRequestStream(IAsyncResultasyncResult);
[C++]
public: Stream* EndGetRequestStream(IAsyncResult* asyncResult);
[JScript]
public override function EndGetRequestStream(
asyncResult : IAsyncResult) : Stream;
パラメータ
- asyncResult
ストリームの保留中の要求。
戻り値
要求データを書き込むために使用する Stream 。
例外
例外の種類 | 条件 |
---|---|
ArgumentNullException | asyncResult が null 参照 (Visual Basic では Nothing) です。 |
IOException | 要求が完了しませんでした。また、ストリームは使用できません。 |
ArgumentException | 現在のインスタンスによって、 BeginGetRequestStream への呼び出しから asyncResult が返されませんでした。 |
InvalidOperationException | このメソッドは、 asyncResult を使用して既に呼び出されています。 |
WebException | Abort は既に呼び出されました。
または 要求の処理中にエラーが発生しました。 |
解説
EndGetRequestStream メソッドは、 BeginGetRequestStream メソッドが開始したストリームの非同期要求を完了します。 Stream インスタンスが返されると、 Stream.Write メソッドを使用して、 HttpWebRequest でデータを送信できます。
メモ ストリームにデータを書き込む前に、 ContentLength プロパティの値を設定する必要があります。
注意 ストリームを閉じて、再使用のための接続を解放するために Stream.Close メソッドを呼び出す必要があります。ストリームを閉じないと、アプリケーションで接続が不足することがあります。
使用例
[Visual Basic, C#, C++] EndGetRequestStream を使用して、ストリーム インスタンスに対する非同期要求を終了する例を次に示します。
Imports System
Imports System.Net
Imports System.IO
Imports System.Text
Imports System.Threading
Imports Microsoft.VisualBasic
Class HttpWebRequestBeginGetRequest
Public Shared allDone As New ManualResetEvent(False)
Shared Sub Main()
' Create a new HttpWebRequest object.
' Dim request As HttpWebRequest = CType(WebRequest.Create("https://www.contoso.com/example.aspx"), _
' HttpWebRequest)
Dim request As HttpWebRequest = CType(WebRequest.Create("https://localhost/test/PostAccepter.aspx"), _
HttpWebRequest)
' Set the ContentType property.
request.ContentType = "application/x-www-form-urlencoded"
' Set the Method property to 'POST' to post data to the URI.
request.Method = "POST"
' Start the asynchronous operation.
Dim result As IAsyncResult = _
CType(request.BeginGetRequestStream(AddressOf ReadCallback, request), IAsyncResult)
' Keep the main thread from continuing while the asynchronous
' operation completes. A real world application
' could do something useful such as updating its user interface.
allDone.WaitOne()
' Get the response.
Dim response As HttpWebResponse = CType(request.GetResponse(), HttpWebResponse)
Dim streamResponse As Stream = response.GetResponseStream()
Dim streamRead As New StreamReader(streamResponse)
Dim responseString As String = streamRead.ReadToEnd()
Console.WriteLine(responseString)
' Close Stream object.
streamResponse.Close()
streamRead.Close()
' Release the HttpWebResponse.
response.Close()
End Sub ' Main
Private Shared Sub ReadCallback(ByVal asynchronousResult As IAsyncResult)
Dim request As HttpWebRequest = CType(asynchronousResult.AsyncState, HttpWebRequest)
' End the operation.
Dim postStream As Stream = request.EndGetRequestStream(asynchronousResult)
Console.WriteLine("Please enter the input data to be posted:")
Dim postData As [String] = Console.ReadLine()
' Convert the string into byte array.
Dim byteArray As Byte() = Encoding.UTF8.GetBytes(postData)
' Write to the stream.
postStream.Write(byteArray, 0, postData.Length)
postStream.Close()
allDone.Set()
End Sub ' ReadCallback
End Class ' HttpWebRequest_BeginGetRequest
[C#]
using System;
using System.Net;
using System.IO;
using System.Text;
using System.Threading;
class HttpWebRequestBeginGetRequest
{
public static ManualResetEvent allDone = new ManualResetEvent(false);
public static void Main()
{
// Create a new HttpWebRequest object.
HttpWebRequest request=(HttpWebRequest) WebRequest.Create("https://www.contoso.com/example.aspx");
// Set the ContentType property.
request.ContentType="application/x-www-form-urlencoded";
// Set the Method property to 'POST' to post data to the URI.
request.Method = "POST";
// Start the asynchronous operation.
request.BeginGetRequestStream(new AsyncCallback(ReadCallback), request);
// Keep the main thread from continuing while the asynchronous
// operation completes. A real world application
// could do something useful such as updating its user interface.
allDone.WaitOne();
// Get the response.
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream streamResponse = response.GetResponseStream();
StreamReader streamRead = new StreamReader(streamResponse);
string responseString = streamRead.ReadToEnd();
Console.WriteLine(responseString);
// Close the stream object.
streamResponse.Close();
streamRead.Close();
// Release the HttpWebResponse.
response.Close();
}
private static void ReadCallback(IAsyncResult asynchronousResult)
{
HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;
// End the operation.
Stream postStream = request.EndGetRequestStream(asynchronousResult);
Console.WriteLine("Please enter the input data to be posted:");
string postData = Console.ReadLine ();
// Convert the string into a byte array.
byte[] byteArray = Encoding.UTF8.GetBytes(postData);
// Write to the request stream.
postStream.Write(byteArray, 0, postData.Length);
postStream.Close ();
allDone.Set();
}
}
[C++]
#using <mscorlib.dll>
#using <System.dll>
using namespace System;
using namespace System::Net;
using namespace System::IO;
using namespace System::Text;
using namespace System::Threading;
__gc class HttpWebRequestBeginGetRequest {
public:
static ManualResetEvent* allDone = new ManualResetEvent(false);
public:
static void Main() {
// Create a new HttpWebRequest object.
HttpWebRequest* request =
dynamic_cast<HttpWebRequest*> (WebRequest::Create(S"https://www.contoso.com/example.aspx"));
// Set the ContentType property.
request->ContentType=S"application/x-www-form-urlencoded";
// Set the Method property to 'POST' to post data to the Uri.
request->Method=S"POST";
// Start the asynchronous operation.
AsyncCallback* del = new AsyncCallback(0,ReadCallback);
request->BeginGetRequestStream(del, request);
// Keep the main thread from continuing while the asynchronous
// operation completes. A real world application
// could do something useful such as updating its user interface.
allDone->WaitOne();
HttpWebResponse* response =
dynamic_cast<HttpWebResponse*>(request->GetResponse());
Stream* streamResponse =
response->GetResponseStream();
StreamReader* streamRead = new StreamReader(streamResponse);
String *responseString = streamRead->ReadToEnd();
Console::WriteLine(responseString);
// Close Stream object.
streamResponse->Close();
streamRead->Close();
// Release the HttpWebResponse.
response->Close();
}
private:
static void ReadCallback(IAsyncResult* asynchronousResult)
{
HttpWebRequest * request =
dynamic_cast<HttpWebRequest*> (asynchronousResult->AsyncState);
// End the operation.
Stream* postStream = request->EndGetRequestStream(asynchronousResult);
Console::WriteLine(S"Please enter the input data to be posted:");
String * postData = Console::ReadLine();
// Convert the string into Byte array.
Byte ByteArray[] = Encoding::UTF8->GetBytes(postData);
// Write to the request stream.
postStream->Write(ByteArray, 0, postData->Length);
postStream->Close();
allDone->Set();
}
};
void main()
{
HttpWebRequestBeginGetRequest::Main();
}
[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