HttpWebRequest.GetRequestStream Метод

Определение

Получает объект Stream, используемый для записи данных запроса.

Перегрузки

GetRequestStream()

Получает объект Stream, используемый для записи данных запроса.

GetRequestStream(TransportContext)

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

GetRequestStream()

Получает объект 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

Объект Stream, используемый для записи данных запроса.

Исключения

Свойство Method имеет значение GET или HEAD.

-или- KeepAlive равно true, AllowWriteStreamBuffering равно false, ContentLength равно –1, SendChunked равно false, а Method равно POST или PUT.

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

-или- Для TransferEncoding задано значение, а SendChunked равно false.

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

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

Комментарии

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

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

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

Примечание

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

Примечание

Данный член генерирует сведения трассировки, если в приложении включена трассировка сети. Дополнительные сведения см. в разделе "Трассировка сети" в платформа .NET Framework.

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

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

GetRequestStream(TransportContext)

Получает объект 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

Параметры

context
TransportContext

Объект TransportContext для Stream.

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

Stream

Объект Stream, используемый для записи данных запроса.

Исключения

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

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

-или- Для TransferEncoding задано значение, а SendChunked равно false.

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

Свойство Method имеет значение GET или HEAD.

-или- KeepAlive равно true, AllowWriteStreamBuffering равно false, ContentLength равно –1, SendChunked равно false, а Method равно POST или PUT.

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

-или- Истекло время ожидания для запроса.

-или- При обработке этого запроса возникла ошибка.

Комментарии

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

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

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

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

Примечание

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

Примечание

Данный член генерирует сведения трассировки, если в приложении включена трассировка сети. Дополнительные сведения см. в разделе "Трассировка сети" в платформа .NET Framework.

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

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