Condividi tramite


HttpContent Classe

Definizione

Classe di base che rappresenta un corpo dell'entità HTTP e le intestazioni del contenuto.

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 siano definiti 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

È possibile usare vari contenuti HTTP. Questi includono quanto segue.

  1. ByteArrayContent : 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 codifica UTF-8.

  3. FormUrlEncodedContent: contenuto con tuple nome/valore serializzate come application/x-www-form-urlencodedContent-Type.

  4. MultipartContent: contenuto in grado di serializzare più oggetti HttpContent diversi come multipart/*Content-Type.

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

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

Costruttori

HttpContent()

Inizializza una nuova istanza della classe HttpContent.

Proprietà

Headers

Ottiene le intestazioni del contenuto HTTP definite in RFC 2616.

Metodi

CopyTo(Stream, TransportContext, CancellationToken)

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

CopyToAsync(Stream)

Serializzare il contenuto HTTP in un flusso di byte e copiarlo nell'oggetto flusso fornito come parametro stream.

CopyToAsync(Stream, CancellationToken)

Serializzare il contenuto HTTP in un flusso di byte e copiarlo nell'oggetto flusso fornito come parametro stream.

CopyToAsync(Stream, TransportContext)

Serializzare il contenuto HTTP in un flusso di byte e copiarlo nell'oggetto flusso fornito come parametro stream.

CopyToAsync(Stream, TransportContext, CancellationToken)

Serializzare il contenuto HTTP in un flusso di byte e copiarlo nell'oggetto flusso fornito come parametro stream.

CreateContentReadStream(CancellationToken)

Serializza il contenuto HTTP in un flusso di memoria.

CreateContentReadStreamAsync()

Serializzare 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 usate dal HttpContent.

Dispose(Boolean)

Rilascia le risorse non gestite usate dal 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 il Type dell'istanza corrente.

(Ereditato da Object)
LoadIntoBufferAsync()

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

LoadIntoBufferAsync(Int64)

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

MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
ReadAsByteArrayAsync()

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

ReadAsByteArrayAsync(CancellationToken)

Serializzare 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()

Serializzare il contenuto HTTP e restituire un flusso che rappresenta il contenuto come operazione asincrona.

ReadAsStreamAsync(CancellationToken)

Serializzare il contenuto HTTP e restituire un flusso che rappresenta il contenuto come operazione asincrona.

ReadAsStringAsync()

Serializzare il contenuto HTTP in una stringa come operazione asincrona.

ReadAsStringAsync(CancellationToken)

Serializzare 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 un NotSupportedException.

SerializeToStreamAsync(Stream, TransportContext)

Serializzare il contenuto HTTP in un flusso come operazione asincrona.

SerializeToStreamAsync(Stream, TransportContext, CancellationToken)

Serializzare 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 valida in byte.

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 asincrona enumerabile.

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

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

ReadFromJsonAsAsyncEnumerable<TValue>(HttpContent, CancellationToken)

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

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