HttpContent Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Clase base que representa un cuerpo de entidad HTTP y encabezados de contenido.
public ref class HttpContent abstract : IDisposable
public abstract class HttpContent : IDisposable
type HttpContent = class
interface IDisposable
Public MustInherit Class HttpContent
Implements IDisposable
- Herencia
-
HttpContent
- Derivado
- Implementaciones
Ejemplos
En el ejemplo siguiente se muestra una implementación personalizada de HttpContent. Algunos métodos, a pesar de definirse como virtual
y no abstract
, deben invalidarse en la implementación para un comportamiento óptimo.
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));
}
Comentarios
Hay varios contenidos HTTP que se pueden usar. Estos incluyen lo siguiente.
ByteArrayContent: un contenido representado por una matriz de bytes, también actúa como una clase base para StringContent y FormUrlEncodedContent.
StringContent: un contenido basado en cadenas, serializado de forma predeterminada como
text/plain
Content-Type
conUTF-8
codificación.FormUrlEncodedContent: contenido con tuplas de nombre y valor serializadas como
application/x-www-form-urlencoded
Content-Type
.MultipartContent: contenido que puede serializar varios objetos HttpContent diferentes como
multipart/*
Content-Type
.JsonContent: contenido que serializa los objetos como
application/json
Content-Type
conUTF-8
codificación de forma predeterminada.
Un usuario puede derivar la clase de contenido HTTP para proporcionar lógica de serialización de contenido personalizada.
Constructores
HttpContent() |
Inicializa una nueva instancia de la clase HttpContent. |
Propiedades
Headers |
Obtiene los encabezados de contenido HTTP como se define en RFC 2616. |
Métodos
CopyTo(Stream, TransportContext, CancellationToken) |
Serializa el contenido HTTP en un flujo de bytes y lo copia en |
CopyToAsync(Stream) |
Serialice el contenido HTTP en un flujo de bytes y lo copia en el objeto de secuencia proporcionado como parámetro |
CopyToAsync(Stream, CancellationToken) |
Serialice el contenido HTTP en un flujo de bytes y lo copia en el objeto de secuencia proporcionado como parámetro |
CopyToAsync(Stream, TransportContext) |
Serialice el contenido HTTP en un flujo de bytes y lo copia en el objeto de secuencia proporcionado como parámetro |
CopyToAsync(Stream, TransportContext, CancellationToken) |
Serialice el contenido HTTP en un flujo de bytes y lo copia en el objeto de secuencia proporcionado como parámetro |
CreateContentReadStream(CancellationToken) |
Serializa el contenido HTTP en un flujo de memoria. |
CreateContentReadStreamAsync() |
Serialice el contenido HTTP en un flujo de memoria como una operación asincrónica. |
CreateContentReadStreamAsync(CancellationToken) |
Serializa el contenido HTTP en un flujo de memoria como una operación asincrónica. |
Dispose() |
Libera los recursos no administrados y elimina los recursos administrados usados por el HttpContent. |
Dispose(Boolean) |
Libera los recursos no administrados usados por el HttpContent y, opcionalmente, elimina los recursos administrados. |
Equals(Object) |
Determina si el objeto especificado es igual al objeto actual. (Heredado de Object) |
GetHashCode() |
Actúa como función hash predeterminada. (Heredado de Object) |
GetType() |
Obtiene el Type de la instancia actual. (Heredado de Object) |
LoadIntoBufferAsync() |
Serialice el contenido HTTP en un búfer de memoria como una operación asincrónica. |
LoadIntoBufferAsync(CancellationToken) |
Clase base que representa un cuerpo de entidad HTTP y encabezados de contenido. |
LoadIntoBufferAsync(Int64) |
Serialice el contenido HTTP en un búfer de memoria como una operación asincrónica. |
LoadIntoBufferAsync(Int64, CancellationToken) |
Clase base que representa un cuerpo de entidad HTTP y encabezados de contenido. |
MemberwiseClone() |
Crea una copia superficial del Objectactual. (Heredado de Object) |
ReadAsByteArrayAsync() |
Serialice el contenido HTTP en una matriz de bytes como una operación asincrónica. |
ReadAsByteArrayAsync(CancellationToken) |
Serialice el contenido HTTP en una matriz de bytes como una operación asincrónica. |
ReadAsStream() |
Serializa el contenido HTTP y devuelve una secuencia que representa el contenido. |
ReadAsStream(CancellationToken) |
Serializa el contenido HTTP y devuelve una secuencia que representa el contenido. |
ReadAsStreamAsync() |
Serialice el contenido HTTP y devuelva una secuencia que represente el contenido como una operación asincrónica. |
ReadAsStreamAsync(CancellationToken) |
Serialice el contenido HTTP y devuelva una secuencia que represente el contenido como una operación asincrónica. |
ReadAsStringAsync() |
Serialice el contenido HTTP en una cadena como una operación asincrónica. |
ReadAsStringAsync(CancellationToken) |
Serialice el contenido HTTP en una cadena como una operación asincrónica. |
SerializeToStream(Stream, TransportContext, CancellationToken) |
Cuando se reemplaza en una clase derivada, serializa el contenido HTTP en una secuencia. De lo contrario, inicia un NotSupportedException. |
SerializeToStreamAsync(Stream, TransportContext) |
Serialice el contenido HTTP en una secuencia como una operación asincrónica. |
SerializeToStreamAsync(Stream, TransportContext, CancellationToken) |
Serialice el contenido HTTP en una secuencia como una operación asincrónica. |
ToString() |
Devuelve una cadena que representa el objeto actual. (Heredado de Object) |
TryComputeLength(Int64) |
Determina si el contenido HTTP tiene una longitud válida en bytes. |
Métodos de extensión
ReadFromJsonAsAsyncEnumerable<TValue>(HttpContent, JsonSerializerOptions, CancellationToken) |
Lee el contenido HTTP y devuelve el valor resultante de deserializar el contenido como JSON en una operación enumerable asincrónica. |
ReadFromJsonAsAsyncEnumerable<TValue>(HttpContent, JsonTypeInfo<TValue>, CancellationToken) |
Lee el contenido HTTP y devuelve el valor resultante de deserializar el contenido como JSON en una operación enumerable asincrónica. |
ReadFromJsonAsAsyncEnumerable<TValue>(HttpContent, CancellationToken) |
Lee el contenido HTTP y devuelve el valor resultante de deserializar el contenido como JSON en una operación enumerable asincrónica. |
ReadFromJsonAsync(HttpContent, Type, JsonSerializerOptions, CancellationToken) |
Lee el contenido HTTP y devuelve el valor resultante de deserializar el contenido como JSON en una operación asincrónica. |
ReadFromJsonAsync(HttpContent, Type, JsonSerializerContext, CancellationToken) |
Lee el contenido HTTP y devuelve el valor resultante de deserializar el contenido como JSON en una operación asincrónica. |
ReadFromJsonAsync(HttpContent, Type, CancellationToken) |
Lee el contenido HTTP y devuelve el valor resultante de deserializar el contenido como JSON en una operación asincrónica. |
ReadFromJsonAsync<T>(HttpContent, JsonSerializerOptions, CancellationToken) |
Lee el contenido HTTP y devuelve el valor resultante de deserializar el contenido como JSON en una operación asincrónica. |
ReadFromJsonAsync<T>(HttpContent, JsonTypeInfo<T>, CancellationToken) |
Lee el contenido HTTP y devuelve el valor resultante de deserializar el contenido como JSON en una operación asincrónica. |
ReadFromJsonAsync<T>(HttpContent, CancellationToken) |
Lee el contenido HTTP y devuelve el valor resultante de deserializar el contenido como JSON en una operación asincrónica. |