HttpWebRequest.GetRequestStream Método

Definición

Obtiene un objeto Stream que se utilizará para escribir los datos de la solicitud.

Sobrecargas

GetRequestStream()

Obtiene un objeto Stream que se utilizará para escribir los datos de la solicitud.

GetRequestStream(TransportContext)

Obtiene un objeto Stream que se va a usar para escribir los datos de la solicitud y genera el objeto TransportContext asociado a la secuencia.

GetRequestStream()

Obtiene un objeto Stream que se utilizará para escribir los datos de la solicitud.

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

Devoluciones

Stream

Stream que se utiliza para escribir los datos de la solicitud.

Excepciones

La propiedad Method es GET o HEAD.

o bien

KeepAlive es true, AllowWriteStreamBuffering es false, ContentLength es -1, SendChunked es false y Method es POST o PUT.

No puede llamarse al método GetRequestStream() más de una vez.

o bien

TransferEncoding se establece en un valor y SendChunked es false.

El validador de caché de solicitud indicó que la respuesta para esta solicitud se puede atender desde la memoria caché; sin embargo, las solicitudes que escriben datos no deben usar la caché. Esta excepción puede producirse si usa un validador de caché personalizado que se implementa incorrectamente.

Se llamó a Abort() anteriormente.

o bien

Ha caducado el período del tiempo de espera de la solicitud.

o bien

Error al procesar la solicitud.

En una aplicación de .NET Compact Framework, no se obtuvo una secuencia de solicitud con longitud de contenido cero y se cerró correctamente. Para más información sobre cómo controlar solicitudes de longitud de contenido cero, vea Programación para redes en .NET Compact Framework.

Ejemplos

En el ejemplo de código siguiente se usa el GetRequestStream método para devolver una instancia de flujo.

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

Comentarios

El GetRequestStream método devuelve una secuencia que se va a usar para enviar datos para .HttpWebRequest Una vez devuelto el Stream objeto, puede enviar datos con HttpWebRequest mediante el Stream.Write método .

Si una aplicación necesita establecer el valor de la ContentLength propiedad , debe hacerse antes de recuperar la secuencia.

Debe llamar al Stream.Close método para cerrar la secuencia y liberar la conexión para su reutilización. Si no se cierra la secuencia, la aplicación se agota las conexiones.

Nota:

La aplicación no puede mezclar métodos sincrónicos y asincrónicos para una solicitud determinada. Si llama al GetRequestStream método , debe usar el GetResponse método para recuperar la respuesta.

Nota

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación. Para obtener más información, vea Seguimiento de red en .NET Framework.

Consulte también

Se aplica a

GetRequestStream(TransportContext)

Obtiene un objeto Stream que se va a usar para escribir los datos de la solicitud y genera el objeto TransportContext asociado a la secuencia.

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

Parámetros

Devoluciones

Stream

Stream que se utiliza para escribir los datos de la solicitud.

Excepciones

El método GetRequestStream() no pudo obtener Stream.

No puede llamarse al método GetRequestStream() más de una vez.

o bien

TransferEncoding se establece en un valor y SendChunked es false.

El validador de caché de solicitud indicó que la respuesta para esta solicitud se puede atender desde la memoria caché; sin embargo, las solicitudes que escriben datos no deben usar la caché. Esta excepción puede producirse si usa un validador de caché personalizado que se implementa incorrectamente.

La propiedad Method es GET o HEAD.

o bien

KeepAlive es true, AllowWriteStreamBuffering es false, ContentLength es -1, SendChunked es false y Method es POST o PUT.

Se llamó a Abort() anteriormente.

o bien

Ha caducado el período del tiempo de espera de la solicitud.

o bien

Se produjo un error al procesar la solicitud.

Comentarios

El GetRequestStream método devuelve un flujo que se va a usar para enviar datos para y HttpWebRequest genera el TransportContext objeto asociado a la secuencia. Una vez devuelto el Stream objeto, puede enviar datos con HttpWebRequest mediante el Stream.Write método .

Es posible que algunas aplicaciones que usen autenticación de Windows integradas con protección ampliada necesiten poder consultar la capa de transporte utilizada por HttpWebRequest para recuperar el token de enlace de canal (CBT) del canal TLS subyacente. El GetRequestStream método proporciona acceso a esta información para los métodos HTTP que tienen un cuerpo de solicitud (POST y PUT solicitudes). Esto solo es necesario si la aplicación implementa su propia autenticación y necesita acceso al CBT.

Si una aplicación necesita establecer el valor de la ContentLength propiedad , debe hacerse antes de recuperar la secuencia.

Debe llamar al Stream.Close método para cerrar la secuencia y liberar la conexión para su reutilización. Si no se cierra la secuencia, la aplicación se agota las conexiones.

Nota:

La aplicación no puede mezclar métodos sincrónicos y asincrónicos para una solicitud determinada. Si llama al GetRequestStream método , debe usar el GetResponse método para recuperar la respuesta.

Nota:

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación. Para obtener más información, vea Seguimiento de red en .NET Framework.

Consulte también

Se aplica a