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 задано значение, а 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()
Комментарии
Осторожность
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
Параметры
- context
- TransportContext
TransportContext для Stream.
Возвращаемое значение
Stream для записи данных запроса.
Исключения
Метод GetRequestStream() не смог получить Stream.
Метод GetRequestStream() вызывается несколько раз.
-или-
TransferEncoding задано значение, а SendChunked — false
.
Проверяющий элемент кэша запросов указывает, что ответ на этот запрос можно обслуживать из кэша; однако запросы, которые записывают данные, не должны использовать кэш. Это исключение может возникать, если вы используете настраиваемый проверяющий элемент кэша, который неправильно реализован.
Свойство 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.
См. также раздел
- TransportContext
- GetChannelBinding(ChannelBindingKind)
- System.Security.Authentication.ExtendedProtection
- ChannelBinding
- встроенная проверка подлинности Windows с расширенной защитой