Ler em inglês

Partilhar via


HttpWebRequest.EndGetRequestStream Método

Definição

Encerra uma solicitação assíncrona de um objeto Stream a ser usado para gravar dados.

Sobrecargas

EndGetRequestStream(IAsyncResult, TransportContext)

Encerra uma solicitação assíncrona de um objeto Stream a ser usado para gravar dados e gera o TransportContext associado ao fluxo.

EndGetRequestStream(IAsyncResult)

Encerra uma solicitação assíncrona de um objeto Stream a ser usado para gravar dados.

EndGetRequestStream(IAsyncResult, TransportContext)

Origem:
HttpWebRequest.cs
Origem:
HttpWebRequest.cs
Origem:
HttpWebRequest.cs

Encerra uma solicitação assíncrona de um objeto Stream a ser usado para gravar dados e gera o TransportContext associado ao fluxo.

public System.IO.Stream EndGetRequestStream (IAsyncResult asyncResult, out System.Net.TransportContext? context);
public System.IO.Stream EndGetRequestStream (IAsyncResult asyncResult, out System.Net.TransportContext context);

Parâmetros

asyncResult
IAsyncResult

A solicitação pendente de um fluxo.

Retornos

Um Stream a ser usado para gravar dados de solicitação.

Exceções

asyncResult não foi retornado pela instância atual de uma chamada para BeginGetRequestStream(AsyncCallback, Object).

asyncResult é null.

Esse método foi chamado anteriormente usando asyncResult.

A solicitação não foi concluída e nenhum fluxo está disponível.

Abort() foi chamado anteriormente.

-ou-

Erro ao processar a solicitação.

Comentários

Atenção

WebRequest, HttpWebRequest, ServicePointe WebClient estão obsoletos e você não deve usá-los para um novo desenvolvimento. Em vez disso, use HttpClient.

O método EndGetRequestStream conclui uma solicitação assíncrona para um fluxo iniciado pelo método BeginGetRequestStream e gera o TransportContext associado ao fluxo. Depois que o objeto Stream tiver sido retornado, você poderá enviar dados com o HttpWebRequest usando o método Stream.Write.

Alguns aplicativos que usam a autenticação integrada do Windows com proteção estendida podem precisar ser capazes de consultar a camada de transporte usada por HttpWebRequest para recuperar o CBT (token de associação de canal) do canal TLS subjacente. O método GetRequestStream fornece acesso a essas informações para métodos HTTP que têm um corpo da solicitação (POST e solicitações PUT). Isso só será necessário se o aplicativo estiver implementando sua própria autenticação e precisar de acesso ao CBT.

Nota

  • Se você precisar definir o valor da propriedade ContentLength antes de gravar dados no fluxo.
  • Você deve chamar o método Stream.Close para fechar o fluxo e liberar a conexão para reutilização. A falha ao fechar o fluxo faz com que o aplicativo fique sem conexões.
  • Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de Rede no .NET Framework.

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

EndGetRequestStream(IAsyncResult)

Origem:
HttpWebRequest.cs
Origem:
HttpWebRequest.cs
Origem:
HttpWebRequest.cs

Encerra uma solicitação assíncrona de um objeto Stream a ser usado para gravar dados.

public override System.IO.Stream EndGetRequestStream (IAsyncResult asyncResult);

Parâmetros

asyncResult
IAsyncResult

A solicitação pendente de um fluxo.

Retornos

Um Stream a ser usado para gravar dados de solicitação.

Exceções

asyncResult é null.

A solicitação não foi concluída e nenhum fluxo está disponível.

asyncResult não foi retornado pela instância atual de uma chamada para BeginGetRequestStream(AsyncCallback, Object).

Esse método foi chamado anteriormente usando asyncResult.

Abort() foi chamado anteriormente.

-ou-

Erro ao processar a solicitação.

Exemplos

O exemplo de código a seguir usa o método EndGetRequestStream para encerrar uma solicitação assíncrona para uma instância de fluxo.

using System;
using System.Net;
using System.IO;
using System.Text;
using System.Threading;

class HttpWebRequestBeginGetRequest
{
    private static ManualResetEvent allDone = new ManualResetEvent(false);

    public static void Main(string[] args)
    {


        // Create a new HttpWebRequest object.
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.contoso.com/example.aspx");

        request.ContentType = "application/x-www-form-urlencoded";

        // Set the Method property to 'POST' to post data to the URI.
        request.Method = "POST";

        // start the asynchronous operation
        request.BeginGetRequestStream(new AsyncCallback(GetRequestStreamCallback), request);

        // Keep the main thread from continuing while the asynchronous
        // operation completes. A real world application
        // could do something useful such as updating its user interface.
        allDone.WaitOne();
    }

    private static void GetRequestStreamCallback(IAsyncResult asynchronousResult)
    {
        HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;

        // End the operation
        Stream postStream = request.EndGetRequestStream(asynchronousResult);

        Console.WriteLine("Please enter the input data to be posted:");
        string postData = Console.ReadLine();

        // Convert the string into a byte array.
        byte[] byteArray = Encoding.UTF8.GetBytes(postData);

        // Write to the request stream.
        postStream.Write(byteArray, 0, postData.Length);
        postStream.Close();

        // Start the asynchronous operation to get the response
        request.BeginGetResponse(new AsyncCallback(GetResponseCallback), request);
    }

    private static void GetResponseCallback(IAsyncResult asynchronousResult)
    {
        HttpWebRequest request = (HttpWebRequest)asynchronousResult.AsyncState;

        // End the operation
        HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(asynchronousResult);
        Stream streamResponse = response.GetResponseStream();
        StreamReader streamRead = new StreamReader(streamResponse);
        string responseString = streamRead.ReadToEnd();
        Console.WriteLine(responseString);
        // Close the stream object
        streamResponse.Close();
        streamRead.Close();

        // Release the HttpWebResponse
        response.Close();
        allDone.Set();
    }
}

Comentários

Atenção

WebRequest, HttpWebRequest, ServicePointe WebClient estão obsoletos e você não deve usá-los para um novo desenvolvimento. Em vez disso, use HttpClient.

O método EndGetRequestStream conclui uma solicitação assíncrona para um fluxo iniciado pelo método BeginGetRequestStream. Depois que o objeto Stream tiver sido retornado, você poderá enviar dados com o HttpWebRequest usando o método Stream.Write.

Nota

  • Você deve definir o valor da propriedade ContentLength antes de gravar dados no fluxo.
  • Você deve chamar o método Stream.Close para fechar o fluxo e liberar a conexão para reutilização. A falha ao fechar o fluxo faz com que o aplicativo fique sem conexões.
  • Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de Rede no .NET Framework.

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1
UWP 10.0