FileWebRequest::BeginGetRequestStream Method
Begins an asynchronous request for a Stream object to use to write data.
Namespace: System.Net
Assembly: System (in System.dll)
[HostProtectionAttribute(SecurityAction::LinkDemand, ExternalThreading = true)] public: virtual IAsyncResult^ BeginGetRequestStream( AsyncCallback^ callback, Object^ state ) override
Parameters
- callback
- Type: System::AsyncCallback
The AsyncCallback delegate.
- state
- Type: System::Object
An object that contains state information for this request.
| Exception | Condition |
|---|---|
| ProtocolViolationException | The Method property is GET and the application writes to the stream. |
| InvalidOperationException | The stream is being used by a previous call to BeginGetRequestStream. |
| ApplicationException | No write stream is available. |
| WebException | The FileWebRequest was aborted. |
The BeginGetRequestStream method starts an asynchronous request for a stream used to send data to a file system resource. The callback method that implements the AsyncCallback delegate uses the EndGetRequestStream method to return the request stream.
Note |
|---|
The HostProtectionAttribute attribute applied to this type or member has the following Resources property value: ExternalThreading. The HostProtectionAttribute does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser). For more information, see the HostProtectionAttribute class or SQL Server Programming and Host Protection Attributes. |
The following code example uses BeginGetRequestStream to make an asynchronous request for a Stream object.
public ref class RequestDeclare { public: FileWebRequest^ myFileWebRequest; String^ userinput; RequestDeclare() { myFileWebRequest = nullptr; } }; ref class FileWebRequest_reqbeginend { public: static ManualResetEvent^ allDone = gcnew ManualResetEvent( false ); static void ReadCallback( IAsyncResult^ ar ) { try { // State of the request is asynchronous. RequestDeclare^ requestDeclare = dynamic_cast<RequestDeclare^>(ar->AsyncState); FileWebRequest^ myFileWebRequest = requestDeclare->myFileWebRequest; String^ sendToFile = requestDeclare->userinput; // End the Asynchronus request by calling the 'EndGetRequestStream()' method. Stream^ readStream = myFileWebRequest->EndGetRequestStream( ar ); // Convert the String* into Byte array. ASCIIEncoding^ encoder = gcnew ASCIIEncoding; array<Byte>^byteArray = encoder->GetBytes( sendToFile ); // Write to the stream. readStream->Write( byteArray, 0, sendToFile->Length ); readStream->Close(); allDone->Set(); Console::WriteLine( "\nThe String you entered was successfully written into the file." ); Console::WriteLine( "\nPress Enter to continue." ); } catch ( ApplicationException^ e ) { Console::WriteLine( "ApplicationException is : {0}", e->Message ); } } }; int main() { array<String^>^args = Environment::GetCommandLineArgs(); if ( args->Length < 2 ) { Console::WriteLine( "\nPlease enter the file name as command line parameter:" ); Console::WriteLine( "Usage:FileWebRequest_reqbeginend <systemname>/<sharedfoldername>/<filename>\n" ); Console::WriteLine( "Example:FileWebRequest_reqbeginend shafeeque/shaf/hello.txt" ); } else { try { // Place a webrequest. WebRequest^ myWebRequest = WebRequest::Create( String::Concat( "file://", args[ 1 ] ) ); // Create an instance of the 'RequestDeclare' and associate the 'myWebRequest' to it. RequestDeclare^ requestDeclare = gcnew RequestDeclare; requestDeclare->myFileWebRequest = dynamic_cast<FileWebRequest^>(myWebRequest); // Set the 'Method' property of 'FileWebRequest' Object* to 'POST' method. requestDeclare->myFileWebRequest->Method = "POST"; Console::WriteLine( "Enter the String* you want to write into the file:" ); requestDeclare->userinput = Console::ReadLine(); // Begin the Asynchronous request for getting file content using 'BeginGetRequestStream()' method . IAsyncResult^ r = dynamic_cast<IAsyncResult^>(requestDeclare->myFileWebRequest->BeginGetRequestStream( gcnew AsyncCallback( &FileWebRequest_reqbeginend::ReadCallback ), requestDeclare )); FileWebRequest_reqbeginend::allDone->WaitOne(); Console::Read(); } catch ( ProtocolViolationException^ e ) { Console::WriteLine( "ProtocolViolationException is : {0}", e->Message ); } catch ( InvalidOperationException^ e ) { Console::WriteLine( "InvalidOperationException is : {0}", e->Message ); } catch ( UriFormatException^ e ) { Console::WriteLine( "UriFormatExceptionException is : {0}", e->Message ); } } }
Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Note