HttpWebRequest.BeginGetRequestStream-Methode
Startet eine asynchrone Anforderung eines Stream-Objekts, das zum Schreiben von Daten verwendet werden soll.
Namespace: System.Net
Assembly: System (in system.dll)
Syntax
'Declaration
Public Overrides Function BeginGetRequestStream ( _
callback As AsyncCallback, _
state As Object _
) As IAsyncResult
'Usage
Dim instance As HttpWebRequest
Dim callback As AsyncCallback
Dim state As Object
Dim returnValue As IAsyncResult
returnValue = instance.BeginGetRequestStream(callback, state)
public override IAsyncResult BeginGetRequestStream (
AsyncCallback callback,
Object state
)
public:
virtual IAsyncResult^ BeginGetRequestStream (
AsyncCallback^ callback,
Object^ state
) override
public IAsyncResult BeginGetRequestStream (
AsyncCallback callback,
Object state
)
public override function BeginGetRequestStream (
callback : AsyncCallback,
state : Object
) : IAsyncResult
Parameter
- callback
Der AsyncCallback-Delegat.
- state
Das Zustandsobjekt für diese Anforderung.
Rückgabewert
Ein IAsyncResult, das auf die asynchrone Anforderung verweist.
Ausnahmen
Ausnahmetyp | Bedingung |
---|---|
Die Method-Eigenschaft ist GET oder HEAD. - oder - KeepAlive ist true, AllowWriteStreamBuffering ist false, ContentLength ist -1, SendChunked ist false, und Method ist POST oder PUT. |
|
Der Stream wird von einem vorherigen Aufruf von BeginGetRequestStream verwendet. - oder - TransferEncoding ist auf einen Wert festgelegt, und SendChunked ist false. - oder - Es sind nur noch wenige Threads im Threadpool verfügbar. |
|
Die Cachebestätigung der Anforderung hat angegeben, dass die Antwort für diese Anforderung vom Cache bereitgestellt werden kann. Anforderungen, die Daten schreiben, dürfen jedoch den Cache nicht verwenden. Diese Ausnahme kann auftreten, wenn Sie eine benutzerdefinierte Cachebestätigung verwenden, die nicht ordnungsgemäß implementiert wurde. |
|
Abort wurde bereits zuvor aufgerufen. |
|
In einer .NET Compact Framework-Anwendung wurde ein Anforderungsstream, dessen Inhalt die Länge 0 (null) hat, nicht korrekt abgerufen und geschlossen. Weitere Informationen über das Behandeln von Anforderungen mit einem Inhalt von der Länge 0 (null) finden Sie unter Netzwerkprogrammierung in .NET Compact Framework. |
Hinweise
Die BeginGetRequestStream-Methode startet eine asynchrone Anforderung eines Streams, der zum Senden von Daten für HttpWebRequest verwendet wird. Die asynchrone Rückrufmethode gibt unter Verwendung der EndGetRequestStream-Methode den tatsächlichen Stream zurück.
Weitere Informationen über den Threadpool finden Sie unter Verwalteter Threadpool.
Hinweis
Die Anwendung kann für eine bestimmte Anforderung keine synchronen und asynchronen Methoden kombinieren. Wenn Sie die BeginGetRequestStream-Methode aufrufen, müssen Sie die BeginGetResponse-Methode verwenden, um die Antwort abzurufen.
Hinweis
Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung.
Beispiel
Im folgenden Codebeispiel wird die BeginGetRequestStream-Methode zum Erstellen einer asynchronen Anforderung einer Streaminstanz verwendet.
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
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();
}
}
#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( "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.
AsyncCallback^ del = gcnew AsyncCallback( 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 = gcnew 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( "Please enter the input data to be posted:" );
String^ postData = Console::ReadLine();
// Convert the string into Byte array.
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();
}
import System.*;
import System.Net.*;
import System.IO.*;
import System.Text.*;
import System.Threading.*;
class HttpWebRequestBeginGetRequest
{
public static ManualResetEvent allDone = new ManualResetEvent(false);
public static void main(String[] args)
{
// Create a new HttpWebRequest object.
HttpWebRequest request = (HttpWebRequest)(WebRequest.Create(
"https://www.contoso.com/example.aspx"));
// Set the ContentType property.
request.set_ContentType("application/x-www-form-urlencoded");
// Set the Method property to 'POST' to post data to the URI.
request.set_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();
} //main
private static void ReadCallback(IAsyncResult asynchronousResult)
{
HttpWebRequest request = (HttpWebRequest)
(asynchronousResult.get_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.
ubyte byteArray[] = Encoding.get_UTF8().GetBytes(postData);
// Write to the request stream.
postStream.Write(byteArray, 0, postData.get_Length());
postStream.Close();
allDone.Set();
} //ReadCallback
} //HttpWebRequestBeginGetRequest
Plattformen
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
.NET Compact Framework
Unterstützt in: 2.0, 1.0
Siehe auch
Referenz
HttpWebRequest-Klasse
HttpWebRequest-Member
System.Net-Namespace