Поделиться через


HttpWebRequest.GetRequestStream Метод

Определение

Возвращает объект Stream для записи данных запроса.

Перегрузки

GetRequestStream()

Возвращает объект Stream для записи данных запроса.

GetRequestStream(TransportContext)

Возвращает объект Stream для записи данных запроса и выводит TransportContext, связанный с потоком.

GetRequestStream()

Исходный код:
HttpWebRequest.cs
Исходный код:
HttpWebRequest.cs
Исходный код:
HttpWebRequest.cs

Возвращает объект Stream для записи данных запроса.

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

Возвращаемое значение

Stream для записи данных запроса.

Исключения

Свойство Method — GET или HEAD.

-или-

KeepAlive true, AllowWriteStreamBufferingfalse, ContentLength равно -1, SendChunkedfalse, а Method — POST или PUT.

Метод GetRequestStream() вызывается несколько раз.

-или-

TransferEncoding задано значение, а SendChunkedfalse.

Проверяющий элемент кэша запросов указывает, что ответ на этот запрос можно обслуживать из кэша; однако запросы, которые записывают данные, не должны использовать кэш. Это исключение может возникать, если вы используете настраиваемый проверяющий элемент кэша, который неправильно реализован.

Abort() ранее был вызван.

-или-

Срок ожидания запроса истек.

-или-

Произошла ошибка при обработке запроса.

В приложении .NET Compact Framework поток запросов с нулевой длиной содержимого не был получен и закрыт правильно. Дополнительные сведения об обработке запросов нулевой длины содержимого см. в разделе Сетевое программирование в.NET Compact Framework.

Примеры

В следующем примере кода используется метод GetRequestStream для возврата экземпляра потока.

// 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()

Комментарии

Осторожность

WebRequest, HttpWebRequest, ServicePointи WebClient устарели, и их не следует использовать для новой разработки. Вместо этого используйте HttpClient.

Метод GetRequestStream возвращает поток для отправки данных для HttpWebRequest. После возврата объекта Stream можно отправлять данные с HttpWebRequest помощью метода Stream.Write.

Если приложению необходимо задать значение свойства ContentLength, перед получением потока это необходимо сделать.

Чтобы закрыть поток и освободить подключение для повторного использования, необходимо вызвать метод Stream.Close. Сбой закрытия потока приводит к тому, что приложение не упустит подключения.

Заметка

Приложение не может смешивать синхронные и асинхронные методы для конкретного запроса. При вызове метода GetRequestStream необходимо использовать метод GetResponse для получения ответа.

Заметка

Этот элемент выводит сведения о трассировке при включении трассировки сети в приложении. Дополнительные сведения см. в разделе трассировки сети в.NET Framework.

См. также раздел

Применяется к

GetRequestStream(TransportContext)

Исходный код:
HttpWebRequest.cs
Исходный код:
HttpWebRequest.cs
Исходный код:
HttpWebRequest.cs

Возвращает объект Stream для записи данных запроса и выводит TransportContext, связанный с потоком.

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

Параметры

Возвращаемое значение

Stream для записи данных запроса.

Исключения

Метод GetRequestStream() не смог получить Stream.

Метод GetRequestStream() вызывается несколько раз.

-или-

TransferEncoding задано значение, а SendChunkedfalse.

Проверяющий элемент кэша запросов указывает, что ответ на этот запрос можно обслуживать из кэша; однако запросы, которые записывают данные, не должны использовать кэш. Это исключение может возникать, если вы используете настраиваемый проверяющий элемент кэша, который неправильно реализован.

Свойство Method — GET или HEAD.

-или-

KeepAlive true, AllowWriteStreamBufferingfalse, ContentLength равно -1, SendChunkedfalse, а Method — POST или PUT.

Abort() ранее был вызван.

-или-

Срок ожидания запроса истек.

-или-

Произошла ошибка при обработке запроса.

Комментарии

Осторожность

WebRequest, HttpWebRequest, ServicePointи WebClient устарели, и их не следует использовать для новой разработки. Вместо этого используйте HttpClient.

Метод GetRequestStream возвращает поток для отправки данных для HttpWebRequest и выводит TransportContext, связанные с потоком. После возврата объекта Stream можно отправлять данные с HttpWebRequest помощью метода Stream.Write.

Некоторым приложениям, использующим встроенную проверку подлинности Windows с расширенной защитой, может потребоваться запрашивать уровень транспорта, используемый HttpWebRequest для получения маркера привязки канала (CBT) из базового канала TLS. Метод GetRequestStream предоставляет доступ к этой информации для методов HTTP, имеющих текст запроса (POST и PUT запросов). Это необходимо только в том случае, если приложение реализует собственную проверку подлинности и нуждается в доступе к CBT.

Если приложению необходимо задать значение свойства ContentLength, перед получением потока это необходимо сделать.

Чтобы закрыть поток и освободить подключение для повторного использования, необходимо вызвать метод Stream.Close. Сбой закрытия потока приводит к тому, что приложение не упустит подключения.

Заметка

Приложение не может смешивать синхронные и асинхронные методы для конкретного запроса. При вызове метода GetRequestStream необходимо использовать метод GetResponse для получения ответа.

Заметка

Этот элемент выводит сведения о трассировке при включении трассировки сети в приложении. Дополнительные сведения см. в разделе трассировки сети в.NET Framework.

См. также раздел

Применяется к