HttpWebRequest::EndGetRequestStream Method (IAsyncResult^)
Ends an asynchronous request for a Stream object to use to write data.
Assembly: System (in System.dll)
Parameters
- asyncResult
-
Type:
System::IAsyncResult^
The pending request for a stream.
| Exception | Condition |
|---|---|
| ArgumentNullException | asyncResult is null. |
| IOException | The request did not complete, and no stream is available. |
| ArgumentException | asyncResult was not returned by the current instance from a call to BeginGetRequestStream. |
| InvalidOperationException | This method was called previously using asyncResult. |
| WebException |
The EndGetRequestStream method completes an asynchronous request for a stream that was started by the BeginGetRequestStream method. After the Stream object has been returned, you can send data with the HttpWebRequest by using the Stream::Write method.
Note |
|---|
You must set the value of the ContentLength property before writing data to the stream. |
Caution |
|---|
You must call the Stream::Close method to close the stream and release the connection for reuse. Failure to close the stream causes your application to run out of connections. |
Note |
|---|
This member outputs trace information when you enable network tracing in your application. For more information, see Network Tracing in the .NET Framework. |
The following code example uses the EndGetRequestStream method to end an asynchronous request for a stream instance.
#using <System.dll> using namespace System; using namespace System::Net; using namespace System::IO; using namespace System::Text; using namespace System::Threading; ref class HttpWebRequestBeginGetRequest { public: static ManualResetEvent^ allDone = gcnew ManualResetEvent( false ); static void Main() { // Create a new HttpWebRequest object. HttpWebRequest^ request = dynamic_cast<HttpWebRequest^>(WebRequest::Create( "http://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. AsyncCallback^ del = gcnew AsyncCallback(GetRequestStreamCallback); 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(); } private: static void GetRequestStreamCallback(IAsyncResult^ asynchronousResult) { HttpWebRequest^ request = dynamic_cast<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. array<Byte>^ByteArray = Encoding::UTF8->GetBytes(postData); // Write to the request stream. postStream->Write(ByteArray, 0, postData->Length); postStream->Close(); // Start the asynchronous operation to get the response AsyncCallback^ del = gcnew AsyncCallback(GetResponseCallback); request->BeginGetResponse(del, request); } static void GetResponseCallback(IAsyncResult^ asynchronousResult) { HttpWebRequest^ request = dynamic_cast<HttpWebRequest^>(asynchronousResult->AsyncState); // End the operation HttpWebResponse^ response = dynamic_cast<HttpWebResponse^>(request->EndGetResponse(asynchronousResult)); Stream^ streamResponse = response->GetResponseStream(); StreamReader^ streamRead = gcnew StreamReader(streamResponse); String^ responseString = streamRead->ReadToEnd(); Console::WriteLine(responseString); // Close the stream object streamResponse->Close(); streamRead->Close(); // Release the HttpWebResponse response->Close(); allDone->Set(); } }; void main() { HttpWebRequestBeginGetRequest::Main(); }
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1

