HttpContent Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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.
ByteArrayContent - Um conteúdo representado por um array de bytes, também serve como classe base para StringContent e FormUrlEncodedContent.
StringContent - Um conteúdo baseado em strings, por defeito serializado como
text/plainContent-TypenaUTF-8codificação.FormUrlEncodedContent - Um conteúdo com tuplas nome/valor serializadas como
application/x-www-form-urlencodedContent-Type.MultipartContent - Um conteúdo que pode serializar múltiplos objetos diferentes HttpContent como
multipart/*Content-Type.JsonContent - Um conteúdo que serializa objetos como
application/jsonContent-TypecodificaçãoUTF-8por 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 |
| CopyToAsync(Stream) |
Serialize o conteúdo HTTP num fluxo de bytes e copie-o para o objeto de fluxo fornecido como |
| 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. |