HttpContent Classe

Definição

Uma classe base que representa o corpo de uma entidade HTTP e os cabeçalhos de conteúdo.

public ref class HttpContent abstract : IDisposable
public abstract class HttpContent : IDisposable
type HttpContent = class
    interface IDisposable
Public MustInherit Class HttpContent
Implements IDisposable
Herança
HttpContent
Derivado
Implementações

Exemplos

O exemplo seguinte mostra uma implementação personalizada de HttpContent. Alguns métodos, apesar de definidos como virtual e não abstract, devem ainda ser sobrepostos na implementação para um comportamento ótimo.

public class MyContent : HttpContent
{
    private readonly string _data;
    public MyContent(string data)
    {
        _data = data;
    }

    // Minimal implementation needed for an HTTP request content,
    // i.e. a content that will be sent via HttpClient, contains the 2 following methods.
    protected override bool TryComputeLength(out long length)
    {
        // This content doesn't support pre-computed length and
        // the request will NOT contain Content-Length header.
        length = 0;
        return false;
    }

    // SerializeToStream* methods are internally used by CopyTo* methods
    // which in turn are used to copy the content to the NetworkStream.
    protected override Task SerializeToStreamAsync(Stream stream, TransportContext? context)
        => stream.WriteAsync(Encoding.UTF8.GetBytes(_data)).AsTask();

    // Override SerializeToStreamAsync overload with CancellationToken
    // if the content serialization supports cancellation, otherwise the token will be dropped.
    protected override Task SerializeToStreamAsync(Stream stream, TransportContext? context, CancellationToken cancellationToken)
        => stream.WriteAsync(Encoding.UTF8.GetBytes(_data), cancellationToken).AsTask();

    // In rare cases when synchronous support is needed, e.g. synchronous CopyTo used by HttpClient.Send,
    // implement synchronous version of SerializeToStream.
    protected override void SerializeToStream(Stream stream, TransportContext? context, CancellationToken cancellationToken)
        => stream.Write(Encoding.UTF8.GetBytes(_data));

    // CreateContentReadStream* methods, if implemented, will be used by ReadAsStream* methods
    // to get the underlying stream and avoid buffering.
    // These methods will not be used by HttpClient on a custom content.
    // They are for content receiving and HttpClient uses its own internal implementation for an HTTP response content.
    protected override Task<Stream> CreateContentReadStreamAsync()
        => Task.FromResult<Stream>(new MemoryStream(Encoding.UTF8.GetBytes(_data)));

    // Override CreateContentReadStreamAsync overload with CancellationToken
    // if the content serialization supports cancellation, otherwise the token will be dropped.
    protected override Task<Stream> CreateContentReadStreamAsync(CancellationToken cancellationToken)
        => Task.FromResult<Stream>(new MemoryStream(Encoding.UTF8.GetBytes(_data))).WaitAsync(cancellationToken);

    // In rare cases when synchronous support is needed, e.g. synchronous ReadAsStream,
    // implement synchronous version of CreateContentRead.
    protected override Stream CreateContentReadStream(CancellationToken cancellationToken)
        => new MemoryStream(Encoding.UTF8.GetBytes(_data));
}

Observações

Existem vários conteúdos HTTP que podem ser utilizados. Incluem-se os seguintes.

  1. ByteArrayContent - Um conteúdo representado por um array de bytes, também serve como classe base para StringContent e FormUrlEncodedContent.

  2. StringContent - Um conteúdo baseado em strings, por defeito serializado como text/plainContent-Type na UTF-8 codificação.

  3. FormUrlEncodedContent - Um conteúdo com tuplas nome/valor serializadas como application/x-www-form-urlencodedContent-Type.

  4. MultipartContent - Um conteúdo que pode serializar múltiplos objetos diferentes HttpContent como multipart/*Content-Type.

  5. JsonContent - Um conteúdo que serializa objetos como application/jsonContent-Type codificação UTF-8 por defeito.

A classe de conteúdo HTTP pode ser derivada por um utilizador para fornecer uma lógica de serialização de conteúdo personalizada.

Construtores

Name Description
HttpContent()

Inicializa uma nova instância da HttpContent classe.

Propriedades

Name Description
Headers

Obtém os cabeçalhos de conteúdo HTTP conforme definido na RFC 2616.

Métodos

Name Description
CopyToAsync(Stream, TransportContext)

Serialize o conteúdo HTTP num fluxo de bytes e copie-o para o objeto de fluxo fornecido como stream parâmetro.

CopyToAsync(Stream)

Serialize o conteúdo HTTP num fluxo de bytes e copie-o para o objeto de fluxo fornecido como stream parâmetro.

CreateContentReadStreamAsync()

Serialize o conteúdo HTTP para um fluxo de memória como uma operação assíncrona.

Dispose()

Liberta os recursos não geridos e dispõe dos recursos geridos usados pelo HttpContent.

Dispose(Boolean)

Liberta os recursos não geridos usados pelo HttpContent e opcionalmente elimina os recursos geridos.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
LoadIntoBufferAsync()

Serialize o conteúdo HTTP para um buffer de memória como uma operação assíncrona.

LoadIntoBufferAsync(Int64)

Serialize o conteúdo HTTP para um buffer de memória como uma operação assíncrona.

MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
ReadAsByteArrayAsync()

Serializar o conteúdo HTTP para um array de bytes como uma operação assíncrona.

ReadAsStreamAsync()

Serialize o conteúdo HTTP e devolve um fluxo que represente o conteúdo como uma operação assíncrona.

ReadAsStringAsync()

Serialize o conteúdo HTTP para uma string como uma operação assíncrona.

SerializeToStreamAsync(Stream, TransportContext)

Serialize o conteúdo HTTP para um fluxo como uma operação assíncrona.

ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)
TryComputeLength(Int64)

Determina se o conteúdo HTTP tem um comprimento válido em bytes.

Aplica-se a