HttpWebRequest.GetRequestStream Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Pobiera obiekt Stream do zapisywania danych żądania.
Przeciążenia
GetRequestStream() |
Pobiera obiekt Stream do zapisywania danych żądania. |
GetRequestStream(TransportContext) |
Pobiera obiekt Stream używany do zapisywania danych żądania i wyprowadzania TransportContext skojarzonych ze strumieniem. |
GetRequestStream()
- Źródło:
- HttpWebRequest.cs
- Źródło:
- HttpWebRequest.cs
- Źródło:
- HttpWebRequest.cs
Pobiera obiekt Stream do zapisywania danych żądania.
public:
override System::IO::Stream ^ GetRequestStream();
public override System.IO.Stream GetRequestStream ();
override this.GetRequestStream : unit -> System.IO.Stream
Public Overrides Function GetRequestStream () As Stream
Zwraca
Stream do pisania danych żądania.
Wyjątki
Właściwość Method to GET lub HEAD.
-lub-
KeepAlive jest true
, AllowWriteStreamBuffering jest false
, ContentLength jest -1, SendChunked jest false
, a Method jest POST lub PUT.
Metoda GetRequestStream() jest wywoływana więcej niż raz.
-lub-
TransferEncoding jest ustawiona na wartość, a SendChunked jest false
.
Moduł sprawdzania poprawności pamięci podręcznej żądań wskazał, że odpowiedź na to żądanie może być obsługiwana z pamięci podręcznej; jednak żądania zapisujące dane nie mogą używać pamięci podręcznej. Ten wyjątek może wystąpić, jeśli używasz niestandardowego modułu sprawdzania poprawności pamięci podręcznej, który jest niepoprawnie zaimplementowany.
Abort() wcześniej wywoływano.
-lub-
Limit czasu żądania wygasł.
-lub-
Wystąpił błąd podczas przetwarzania żądania.
W aplikacji .NET Compact Framework strumień żądania o zerowej długości zawartości nie został uzyskany i zamknięty poprawnie. Aby uzyskać więcej informacji na temat obsługi żądań o zerowej długości zawartości, zobacz Network Programming w programie .NET Compact Framework.
Przykłady
W poniższym przykładzie kodu użyto metody GetRequestStream w celu zwrócenia wystąpienia strumienia.
// Set the 'Method' property of the 'Webrequest' to 'POST'.
myHttpWebRequest->Method = "POST";
Console::WriteLine( "\nPlease enter the data to be posted to the (http://www.contoso.com/codesnippets/next.asp) Uri :" );
// Create a new String* Object* to POST data to the Url.
String^ inputData = Console::ReadLine();
String^ postData = String::Concat( "firstone= ", inputData );
ASCIIEncoding^ encoding = gcnew ASCIIEncoding;
array<Byte>^ byte1 = encoding->GetBytes( postData );
// Set the content type of the data being posted.
myHttpWebRequest->ContentType = "application/x-www-form-urlencoded";
// Set the content length of the String* being posted.
myHttpWebRequest->ContentLength = byte1->Length;
Stream^ newStream = myHttpWebRequest->GetRequestStream();
newStream->Write( byte1, 0, byte1->Length );
Console::WriteLine( "The value of 'ContentLength' property after sending the data is {0}", myHttpWebRequest->ContentLength );
// Close the Stream Object*.
newStream->Close();
// Set the 'Method' property of the 'Webrequest' to 'POST'.
myHttpWebRequest.Method = "POST";
Console.WriteLine ("\nPlease enter the data to be posted to the (http://www.contoso.com/codesnippets/next.asp) Uri :");
// Create a new string object to POST data to the Url.
string inputData = Console.ReadLine ();
string postData = "firstone=" + inputData;
ASCIIEncoding encoding = new ASCIIEncoding ();
byte[] byte1 = encoding.GetBytes (postData);
// Set the content type of the data being posted.
myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
// Set the content length of the string being posted.
myHttpWebRequest.ContentLength = byte1.Length;
Stream newStream = myHttpWebRequest.GetRequestStream ();
newStream.Write (byte1, 0, byte1.Length);
Console.WriteLine ("The value of 'ContentLength' property after sending the data is {0}", myHttpWebRequest.ContentLength);
// Close the Stream object.
newStream.Close ();
' Set the 'Method' property of the 'Webrequest' to 'POST'.
myHttpWebRequest.Method = "POST"
Console.WriteLine(ControlChars.Cr + "Please enter the data to be posted to the (http://www.contoso.com/codesnippets/next.asp) Uri :")
' Create a new string object to POST data to the Url.
Dim inputData As String = Console.ReadLine()
Dim postData As String = "firstone" + ChrW(61) + inputData
Dim encoding As New ASCIIEncoding()
Dim byte1 As Byte() = encoding.GetBytes(postData)
' Set the content type of the data being posted.
myHttpWebRequest.ContentType = "application/x-www-form-urlencoded"
' Set the content length of the string being posted.
myHttpWebRequest.ContentLength = byte1.Length
Dim newStream As Stream = myHttpWebRequest.GetRequestStream()
newStream.Write(byte1, 0, byte1.Length)
Console.WriteLine("The value of 'ContentLength' property after sending the data is {0}", myHttpWebRequest.ContentLength)
newStream.Close()
Uwagi
Ostrożność
WebRequest
, HttpWebRequest
, ServicePoint
i WebClient
są przestarzałe i nie należy ich używać do tworzenia nowych aplikacji. Zamiast tego użyj HttpClient.
Metoda GetRequestStream zwraca strumień używany do wysyłania danych dla HttpWebRequest. Po zwróceniu obiektu Stream można wysłać dane za pomocą HttpWebRequest przy użyciu metody Stream.Write.
Jeśli aplikacja musi ustawić wartość właściwości ContentLength, należy to zrobić przed pobraniem strumienia.
Należy wywołać metodę Stream.Close, aby zamknąć strumień i zwolnić połączenie do ponownego użycia. Niepowodzenie zamknięcia strumienia powoduje, że aplikacja kończy się połączeniami.
Nuta
Aplikacja nie może mieszać metod synchronicznych i asynchronicznych dla określonego żądania. Jeśli wywołasz metodę GetRequestStream, musisz użyć metody GetResponse, aby pobrać odpowiedź.
Nuta
Ten element członkowski generuje informacje śledzenia po włączeniu śledzenia sieci w aplikacji. Aby uzyskać więcej informacji, zobacz Śledzenie sieci w programie .NET Framework.
Zobacz też
Dotyczy
GetRequestStream(TransportContext)
- Źródło:
- HttpWebRequest.cs
- Źródło:
- HttpWebRequest.cs
- Źródło:
- HttpWebRequest.cs
Pobiera obiekt Stream używany do zapisywania danych żądania i wyprowadzania TransportContext skojarzonych ze strumieniem.
public:
System::IO::Stream ^ GetRequestStream([Runtime::InteropServices::Out] System::Net::TransportContext ^ % context);
public System.IO.Stream GetRequestStream (out System.Net.TransportContext? context);
public System.IO.Stream GetRequestStream (out System.Net.TransportContext context);
override this.GetRequestStream : TransportContext -> System.IO.Stream
Public Function GetRequestStream (ByRef context As TransportContext) As Stream
Parametry
- context
- TransportContext
TransportContext dla Stream.
Zwraca
Stream do pisania danych żądania.
Wyjątki
Metoda GetRequestStream() nie mogła uzyskać Stream.
Metoda GetRequestStream() jest wywoływana więcej niż raz.
-lub-
TransferEncoding jest ustawiona na wartość, a SendChunked jest false
.
Moduł sprawdzania poprawności pamięci podręcznej żądań wskazał, że odpowiedź na to żądanie może być obsługiwana z pamięci podręcznej; jednak żądania zapisujące dane nie mogą używać pamięci podręcznej. Ten wyjątek może wystąpić, jeśli używasz niestandardowego modułu sprawdzania poprawności pamięci podręcznej, który jest niepoprawnie zaimplementowany.
Właściwość Method to GET lub HEAD.
-lub-
KeepAlive jest true
, AllowWriteStreamBuffering jest false
, ContentLength jest -1, SendChunked jest false
, a Method jest POST lub PUT.
Abort() wcześniej wywoływano.
-lub-
Limit czasu żądania wygasł.
-lub-
Wystąpił błąd podczas przetwarzania żądania.
Uwagi
Ostrożność
WebRequest
, HttpWebRequest
, ServicePoint
i WebClient
są przestarzałe i nie należy ich używać do tworzenia nowych aplikacji. Zamiast tego użyj HttpClient.
Metoda GetRequestStream zwraca strumień używany do wysyłania danych dla HttpWebRequest i zwraca TransportContext skojarzone ze strumieniem. Po zwróceniu obiektu Stream można wysłać dane za pomocą HttpWebRequest przy użyciu metody Stream.Write.
Niektóre aplikacje korzystające ze zintegrowanego uwierzytelniania systemu Windows z rozszerzoną ochroną mogą wymagać wykonywania zapytań dotyczących warstwy transportu używanej przez HttpWebRequest w celu pobrania tokenu powiązania kanału (CBT) z bazowego kanału TLS. Metoda GetRequestStream zapewnia dostęp do tych informacji dla metod HTTP, które mają treść żądania (POST
i żądania PUT
). Jest to konieczne tylko wtedy, gdy aplikacja implementuje własne uwierzytelnianie i potrzebuje dostępu do CBT.
Jeśli aplikacja musi ustawić wartość właściwości ContentLength, należy to zrobić przed pobraniem strumienia.
Należy wywołać metodę Stream.Close, aby zamknąć strumień i zwolnić połączenie do ponownego użycia. Niepowodzenie zamknięcia strumienia powoduje, że aplikacja kończy się połączeniami.
Nuta
Aplikacja nie może mieszać metod synchronicznych i asynchronicznych dla określonego żądania. Jeśli wywołasz metodę GetRequestStream, musisz użyć metody GetResponse, aby pobrać odpowiedź.
Nuta
Ten element członkowski generuje informacje śledzenia po włączeniu śledzenia sieci w aplikacji. Aby uzyskać więcej informacji, zobacz Śledzenie sieci w programie .NET Framework.
Zobacz też
- TransportContext
- GetChannelBinding(ChannelBindingKind)
- System.Security.Authentication.ExtendedProtection
- ChannelBinding
- zintegrowane uwierzytelnianie systemu Windows z rozszerzoną ochroną