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


HttpWebRequest.GetRequestStream Метод

Определение

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

Перегрузки

Имя Описание
GetRequestStream()

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

GetRequestStream(TransportContext)

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

GetRequestStream()

Исходный код:
HttpWebRequest.cs
Исходный код:
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 = "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
Исходный код:
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.

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

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