HttpContent Classe

Definizione

Classe base che rappresenta un corpo di entità e intestazioni di contenuto HTTP.

public ref class HttpContent abstract : IDisposable
public abstract class HttpContent : IDisposable
type HttpContent = class
    interface IDisposable
Public MustInherit Class HttpContent
Implements IDisposable
Ereditarietà
HttpContent
Derivato
Implementazioni

Esempio

Nell'esempio seguente viene illustrata un'implementazione personalizzata di HttpContent. Alcuni metodi, nonostante sia stato definito come virtual e non abstract, devono comunque essere sottoposti a override nell'implementazione per un comportamento ottimale.

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

Commenti

Sono disponibili vari contenuti HTTP che possono essere usati. Questi includono quanto segue.

  1. ByteArrayContent - Un contenuto rappresentato da una matrice di byte, funge anche da classe di base per StringContent e FormUrlEncodedContent.

  2. StringContent - Contenuto basato su stringa, serializzato per impostazione predefinita come text/plainContent-Type con UTF-8 codifica.

  3. FormUrlEncodedContent - Contenuto con tupla nome/valore serializzata come application/x-www-form-urlencodedContent-Type.

  4. MultipartContent - Contenuto che può serializzare più oggetti diversi HttpContent come multipart/*Content-Type.

  5. JsonContent - Contenuto che serializza gli oggetti come application/jsonContent-Type con UTF-8 la codifica per impostazione predefinita.

La classe di contenuto HTTP può essere derivata da un utente per fornire la logica di serializzazione del contenuto personalizzata.

Costruttori

HttpContent()

Inizializza una nuova istanza della classe HttpContent.

Proprietà

Headers

Ottiene le intestazioni di contenuto HTTP, come definito in RFC 2616.

Metodi

CopyTo(Stream, TransportContext, CancellationToken)

Serializza il contenuto HTTP in un flusso di byte e lo copia in stream.

CopyToAsync(Stream)

Serializza il contenuto HTTP in un flusso di byte e lo copia nell'oggetto flusso fornito come parametro di stream.

CopyToAsync(Stream, CancellationToken)

Serializza il contenuto HTTP in un flusso di byte e lo copia nell'oggetto flusso fornito come parametro di stream.

CopyToAsync(Stream, TransportContext)

Serializza il contenuto HTTP in un flusso di byte e lo copia nell'oggetto flusso fornito come parametro di stream.

CopyToAsync(Stream, TransportContext, CancellationToken)

Serializza il contenuto HTTP in un flusso di byte e lo copia nell'oggetto flusso fornito come parametro di stream.

CreateContentReadStream(CancellationToken)

Serializza il contenuto HTTP in un flusso di memoria.

CreateContentReadStreamAsync()

Serializza il contenuto HTTP in un flusso di memoria come operazione asincrona.

CreateContentReadStreamAsync(CancellationToken)

Serializza il contenuto HTTP in un flusso di memoria come operazione asincrona.

Dispose()

Rilascia le risorse non gestite ed elimina le risorse gestite utilizzate dall'oggetto HttpContent.

Dispose(Boolean)

Rilascia le risorse non gestite usate da HttpContent e, facoltativamente, elimina le risorse gestite.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
LoadIntoBufferAsync()

Serializza il contenuto HTTP in un buffer di memoria come operazione asincrona.

LoadIntoBufferAsync(Int64)

Serializza il contenuto HTTP in un buffer di memoria come operazione asincrona.

MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
ReadAsByteArrayAsync()

Serializza il contenuto HTTP in una matrice di byte come operazione asincrona.

ReadAsByteArrayAsync(CancellationToken)

Serializza il contenuto HTTP in una matrice di byte come operazione asincrona.

ReadAsStream()

Serializza il contenuto HTTP e restituisce un flusso che rappresenta il contenuto.

ReadAsStream(CancellationToken)

Serializza il contenuto HTTP e restituisce un flusso che rappresenta il contenuto.

ReadAsStreamAsync()

Serializza il contenuto HTTP e restituisce un flusso che rappresenta il contenuto come operazione asincrona.

ReadAsStreamAsync(CancellationToken)

Serializza il contenuto HTTP e restituisce un flusso che rappresenta il contenuto come operazione asincrona.

ReadAsStringAsync()

Serializza il contenuto HTTP in una stringa come operazione asincrona.

ReadAsStringAsync(CancellationToken)

Serializza il contenuto HTTP in una stringa come operazione asincrona.

SerializeToStream(Stream, TransportContext, CancellationToken)

Quando sottoposto a override in una classe derivata, serializza il contenuto HTTP in un flusso. in caso contrario, genera NotSupportedException.

SerializeToStreamAsync(Stream, TransportContext)

Serializza il contenuto HTTP in un flusso come operazione asincrona.

SerializeToStreamAsync(Stream, TransportContext, CancellationToken)

Serializza il contenuto HTTP in un flusso come operazione asincrona.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)
TryComputeLength(Int64)

Determina se il contenuto HTTP ha una lunghezza in byte valida.

Metodi di estensione

ReadFromJsonAsAsyncEnumerable<TValue>(HttpContent, JsonSerializerOptions, CancellationToken)

Legge il contenuto HTTP e restituisce il valore risultante dalla deserializzazione del contenuto come JSON in un'operazione enumerabile asincrona.

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

Legge il contenuto HTTP e restituisce il valore risultante dalla deserializzazione del contenuto come JSON in un'operazione enumerabile asincrona.

ReadFromJsonAsAsyncEnumerable<TValue>(HttpContent, CancellationToken)

Legge il contenuto HTTP e restituisce il valore risultante dalla deserializzazione del contenuto come JSON in un'operazione enumerabile asincrona.

ReadFromJsonAsync(HttpContent, Type, JsonSerializerOptions, CancellationToken)

Legge il contenuto HTTP e restituisce il valore risultante dalla deserializzazione del contenuto come JSON in un'operazione asincrona.

ReadFromJsonAsync(HttpContent, Type, JsonSerializerContext, CancellationToken)

Legge il contenuto HTTP e restituisce il valore risultante dalla deserializzazione del contenuto come JSON in un'operazione asincrona.

ReadFromJsonAsync(HttpContent, Type, CancellationToken)

Legge il contenuto HTTP e restituisce il valore risultante dalla deserializzazione del contenuto come JSON in un'operazione asincrona.

ReadFromJsonAsync<T>(HttpContent, JsonSerializerOptions, CancellationToken)

Legge il contenuto HTTP e restituisce il valore risultante dalla deserializzazione del contenuto come JSON in un'operazione asincrona.

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

Legge il contenuto HTTP e restituisce il valore risultante dalla deserializzazione del contenuto come JSON in un'operazione asincrona.

ReadFromJsonAsync<T>(HttpContent, CancellationToken)

Legge il contenuto HTTP e restituisce il valore risultante dalla deserializzazione del contenuto come JSON in un'operazione asincrona.

Si applica a