HttpContent Classe

Definição

Uma classe base que representa um corpo de entidade HTTP e 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 a seguir mostra uma implementação personalizada de HttpContent. Alguns métodos, apesar de serem definidos como virtual e não abstract, ainda devem ser substituídos na implementação para um comportamento ideal.

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));
}

Comentários

Há vários conteúdos HTTP que podem ser usados. Entre eles estão os descritos a seguir.

  1. ByteArrayContent – Um conteúdo representado por uma matriz de bytes, também serve como uma classe base para StringContent e FormUrlEncodedContent.

  2. StringContent – Um conteúdo baseado em cadeia de caracteres, por padrão serializado como text/plainContent-Type com UTF-8 codificação.

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

  4. MultipartContent – Um conteúdo que pode serializar vários objetos diferentes HttpContent como multipart/*Content-Type.

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

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

Construtores

HttpContent()

Inicializa uma nova instância da classe HttpContent.

Propriedades

Headers

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

Métodos

CopyTo(Stream, TransportContext, CancellationToken)

Serializa o conteúdo HTTP em um fluxo de bytes e o copia para stream.

CopyToAsync(Stream)

Serializa o conteúdo HTTP em um fluxo de bytes e cópia-o para o objeto de fluxo fornecido como o parâmetro stream.

CopyToAsync(Stream, CancellationToken)

Serializa o conteúdo HTTP em um fluxo de bytes e cópia-o para o objeto de fluxo fornecido como o parâmetro stream.

CopyToAsync(Stream, TransportContext)

Serializa o conteúdo HTTP em um fluxo de bytes e cópia-o para o objeto de fluxo fornecido como o parâmetro stream.

CopyToAsync(Stream, TransportContext, CancellationToken)

Serializa o conteúdo HTTP em um fluxo de bytes e cópia-o para o objeto de fluxo fornecido como o parâmetro stream.

CreateContentReadStream(CancellationToken)

Serializa o conteúdo HTTP para um fluxo de memória.

CreateContentReadStreamAsync()

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

CreateContentReadStreamAsync(CancellationToken)

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

Dispose()

Libera os recursos não gerenciados e descarta aqueles gerenciados usados pelo HttpContent.

Dispose(Boolean)

Libera os recursos não gerenciados usados pelo HttpContent e, opcionalmente, descarta os recursos gerenciados.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
LoadIntoBufferAsync()

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

LoadIntoBufferAsync(Int64)

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

MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ReadAsByteArrayAsync()

Serialize o conteúdo HTTP em uma matriz de bytes como uma operação assíncrona.

ReadAsByteArrayAsync(CancellationToken)

Serialize o conteúdo HTTP em uma matriz de bytes como uma operação assíncrona.

ReadAsStream()

Serializa o conteúdo HTTP e retorna um fluxo que representa o conteúdo.

ReadAsStream(CancellationToken)

Serializa o conteúdo HTTP e retorna um fluxo que representa o conteúdo.

ReadAsStreamAsync()

Serializar o conteúdo HTTP e retornar um fluxo que representa o conteúdo como uma operação assíncrona.

ReadAsStreamAsync(CancellationToken)

Serializar o conteúdo HTTP e retornar um fluxo que representa o conteúdo como uma operação assíncrona.

ReadAsStringAsync()

Serialize o conteúdo HTTP em uma cadeia de caracteres como uma operação assíncrona.

ReadAsStringAsync(CancellationToken)

Serialize o conteúdo HTTP em uma cadeia de caracteres como uma operação assíncrona.

SerializeToStream(Stream, TransportContext, CancellationToken)

Quando substituído em uma classe derivada, serializa o conteúdo HTTP em um fluxo. Caso contrário, gerará um NotSupportedException.

SerializeToStreamAsync(Stream, TransportContext)

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

SerializeToStreamAsync(Stream, TransportContext, CancellationToken)

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

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)
TryComputeLength(Int64)

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

Métodos de Extensão

ReadFromJsonAsAsyncEnumerable<TValue>(HttpContent, JsonSerializerOptions, CancellationToken)

Lê o conteúdo HTTP e retorna o valor resultante da desserialização do conteúdo como JSON em uma operação enumerável assíncrona.

ReadFromJsonAsAsyncEnumerable<TValue>(HttpContent, JsonTypeInfo<TValue>, CancellationToken)

Lê o conteúdo HTTP e retorna o valor resultante da desserialização do conteúdo como JSON em uma operação enumerável assíncrona.

ReadFromJsonAsAsyncEnumerable<TValue>(HttpContent, CancellationToken)

Lê o conteúdo HTTP e retorna o valor resultante da desserialização do conteúdo como JSON em uma operação enumerável assíncrona.

ReadFromJsonAsync(HttpContent, Type, JsonSerializerOptions, CancellationToken)

Lê o conteúdo HTTP e retorna o valor resultante da desserialização do conteúdo como JSON em uma operação assíncrona.

ReadFromJsonAsync(HttpContent, Type, JsonSerializerContext, CancellationToken)

Lê o conteúdo HTTP e retorna o valor resultante da desserialização do conteúdo como JSON em uma operação assíncrona.

ReadFromJsonAsync(HttpContent, Type, CancellationToken)

Lê o conteúdo HTTP e retorna o valor resultante da desserialização do conteúdo como JSON em uma operação assíncrona.

ReadFromJsonAsync<T>(HttpContent, JsonSerializerOptions, CancellationToken)

Lê o conteúdo HTTP e retorna o valor resultante da desserialização do conteúdo como JSON em uma operação assíncrona.

ReadFromJsonAsync<T>(HttpContent, JsonTypeInfo<T>, CancellationToken)

Lê o conteúdo HTTP e retorna o valor resultante da desserialização do conteúdo como JSON em uma operação assíncrona.

ReadFromJsonAsync<T>(HttpContent, CancellationToken)

Lê o conteúdo HTTP e retorna o valor resultante da desserialização do conteúdo como JSON em uma operação assíncrona.

Aplica-se a