WebRequest::EndGetRequestStream Method (IAsyncResult^)
When overridden in a descendant class, returns a Stream for writing data to the Internet resource.
Assembly: System (in System.dll)
Parameters
- asyncResult
-
Type:
System::IAsyncResult^
An IAsyncResult that references a pending request for a stream.
| Exception | Condition |
|---|---|
| NotImplementedException | Any attempt is made to access the method, when the method is not overridden in a descendant class. |
The EndGetRequestStream method completes an asynchronous stream request that was started by the BeginGetRequestStream method.
Note |
|---|
To avoid timing issues with garbage collection, be sure to close the response stream by calling the Close method on the stream returned by GetResponseStream after calling EndGetResponse. |
Note |
|---|
The WebRequest class is an abstract class. The actual behavior of WebRequest instances at run time is determined by the descendant class returned by the WebRequest::Create method. For more information about default values and exceptions, see the documentation for the descendant classes, such as HttpWebRequest and FileWebRequest. |
The following example obtains and uses the request stream by calling the EndGetRequestStream. The EndGetRequestStream method completes the asynchronous call to BeginGetRequestStream.
#using <System.dll> using namespace System; using namespace System::Net; using namespace System::IO; using namespace System::Text; using namespace System::Threading; public ref class RequestState { public: // This class stores the request state of the request. WebRequest^ request; RequestState() { request = nullptr; } }; ref class WebRequest_BeginGetRequeststream { public: static ManualResetEvent^ allDone = gcnew ManualResetEvent( false ); static void ReadCallback( IAsyncResult^ asynchronousResult ) { RequestState^ myRequestState = dynamic_cast<RequestState^>(asynchronousResult->AsyncState); WebRequest^ myWebRequest = myRequestState->request; // End of the Asynchronus request. Stream^ streamResponse = myWebRequest->EndGetRequestStream( asynchronousResult ); // Create a string that is to be posted to the uri. Console::WriteLine( "Please enter a string to be posted:" ); String^ postData = Console::ReadLine(); // Convert the string into a Byte array. array<Byte>^byteArray = Encoding::UTF8->GetBytes( postData ); // Write data to the stream. streamResponse->Write( byteArray, 0, postData->Length ); streamResponse->Close(); allDone->Set(); } }; int main() { // Create a new request to the mentioned URL. WebRequest^ myWebRequest = WebRequest::Create( "http://www.contoso.com" ); // Create an instance of the RequestState and assign 'myWebRequest' to its request field. RequestState^ myRequestState = gcnew RequestState; myRequestState->request = myWebRequest; myWebRequest->ContentType = "application/x-www-form-urlencoded"; // Set the 'Method' prperty to 'POST' to post data to a Uri. myRequestState->request->Method = "POST"; // Start the Asynchronous 'BeginGetRequestStream' method call. IAsyncResult^ r = dynamic_cast<IAsyncResult^>(myWebRequest->BeginGetRequestStream( gcnew AsyncCallback( WebRequest_BeginGetRequeststream::ReadCallback ), myRequestState )); WebRequest_BeginGetRequeststream::allDone->WaitOne(); WebResponse^ myWebResponse = myWebRequest->GetResponse(); Console::WriteLine( "The String* entered has been posted." ); Console::WriteLine( "Please wait for the response..." ); Stream^ streamResponse = myWebResponse->GetResponseStream(); StreamReader^ streamRead = gcnew StreamReader( streamResponse ); array<Char>^readBuff = gcnew array<Char>(256); int count = streamRead->Read( readBuff, 0, 256 ); Console::WriteLine( "The contents of the HTML page are " ); while ( count > 0 ) { String^ outputData = gcnew String( readBuff,0,count ); Console::Write( outputData ); count = streamRead->Read( readBuff, 0, 256 ); } streamResponse->Close(); streamRead->Close(); // Release the HttpWebResponse Resource. myWebResponse->Close(); }
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
