Sdílet prostřednictvím


HttpContent Třída

Definice

Základní třída představující tělo entity HTTP a hlavičky obsahu.

public ref class HttpContent abstract : IDisposable
public abstract class HttpContent : IDisposable
type HttpContent = class
    interface IDisposable
Public MustInherit Class HttpContent
Implements IDisposable
Dědičnost
HttpContent
Odvozené
Implementuje

Příklady

Následující příklad ukazuje vlastní implementaci HttpContent. Některé metody, i když jsou definovány jako virtual a ne abstract, by se stále měly přepsat v implementaci pro optimální chování.

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

Poznámky

Můžete použít různé obsahy HTTP. Patří mezi ně následující:

  1. ByteArrayContent – obsah reprezentovaný bajtovým polem slouží také jako základní třída pro StringContent a FormUrlEncodedContent.

  2. StringContent – obsah založený na řetězci se standardně serializuje jako text/plainContent-Type s kódováním UTF-8.

  3. FormUrlEncodedContent – obsah s řazenými kolekcemi členů názvu a hodnoty serializovaný jako application/x-www-form-urlencodedContent-Type.

  4. MultipartContent – obsah, který může serializovat více různých objektů HttpContent jako multipart/*Content-Type.

  5. JsonContent – obsah, který serializuje objekty jako application/jsonContent-Type s kódováním UTF-8 ve výchozím nastavení.

Třída obsahu HTTP může být odvozena uživatelem za účelem poskytnutí vlastní logiky serializace obsahu.

Konstruktory

HttpContent()

Inicializuje novou instanci HttpContent třídy.

Vlastnosti

Headers

Získá hlavičky obsahu HTTP definované v RFC 2616.

Metody

CopyTo(Stream, TransportContext, CancellationToken)

Serializuje obsah HTTP do datového proudu bajtů a zkopíruje ho do stream.

CopyToAsync(Stream)

Serializace obsahu HTTP do datového proudu bajtů a zkopíruje ho do objektu streamu poskytnutého jako parametr stream.

CopyToAsync(Stream, CancellationToken)

Serializace obsahu HTTP do datového proudu bajtů a zkopíruje ho do objektu streamu poskytnutého jako parametr stream.

CopyToAsync(Stream, TransportContext)

Serializace obsahu HTTP do datového proudu bajtů a zkopíruje ho do objektu streamu poskytnutého jako parametr stream.

CopyToAsync(Stream, TransportContext, CancellationToken)

Serializace obsahu HTTP do datového proudu bajtů a zkopíruje ho do objektu streamu poskytnutého jako parametr stream.

CreateContentReadStream(CancellationToken)

Serializuje obsah HTTP do datového proudu paměti.

CreateContentReadStreamAsync()

Serializace obsahu HTTP do datového proudu paměti jako asynchronní operace.

CreateContentReadStreamAsync(CancellationToken)

Serializuje obsah HTTP do datového proudu paměti jako asynchronní operaci.

Dispose()

Uvolní nespravované prostředky a odstraní spravované prostředky používané HttpContent.

Dispose(Boolean)

Uvolní nespravované prostředky používané HttpContent a volitelně odstraní spravované prostředky.

Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetType()

Získá Type aktuální instance.

(Zděděno od Object)
LoadIntoBufferAsync()

Serializace obsahu HTTP do vyrovnávací paměti jako asynchronní operace.

LoadIntoBufferAsync(CancellationToken)

Základní třída představující tělo entity HTTP a hlavičky obsahu.

LoadIntoBufferAsync(Int64)

Serializace obsahu HTTP do vyrovnávací paměti jako asynchronní operace.

LoadIntoBufferAsync(Int64, CancellationToken)

Základní třída představující tělo entity HTTP a hlavičky obsahu.

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
ReadAsByteArrayAsync()

Serializace obsahu HTTP na bajtové pole jako asynchronní operace.

ReadAsByteArrayAsync(CancellationToken)

Serializace obsahu HTTP na bajtové pole jako asynchronní operace.

ReadAsStream()

Serializuje obsah HTTP a vrátí datový proud, který představuje obsah.

ReadAsStream(CancellationToken)

Serializuje obsah HTTP a vrátí datový proud, který představuje obsah.

ReadAsStreamAsync()

Serializace obsahu HTTP a vrácení datového proudu, který představuje obsah jako asynchronní operaci.

ReadAsStreamAsync(CancellationToken)

Serializace obsahu HTTP a vrácení datového proudu, který představuje obsah jako asynchronní operaci.

ReadAsStringAsync()

Serializace obsahu HTTP na řetězec jako asynchronní operace.

ReadAsStringAsync(CancellationToken)

Serializace obsahu HTTP na řetězec jako asynchronní operace.

SerializeToStream(Stream, TransportContext, CancellationToken)

Při přepsání v odvozené třídě serializuje obsah HTTP do datového proudu. V opačném případě vyvolá NotSupportedException.

SerializeToStreamAsync(Stream, TransportContext)

Serializace obsahu HTTP do datového proudu jako asynchronní operace.

SerializeToStreamAsync(Stream, TransportContext, CancellationToken)

Serializace obsahu HTTP do datového proudu jako asynchronní operace.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)
TryComputeLength(Int64)

Určuje, zda má obsah HTTP platnou délku v bajtech.

Metody rozšíření

ReadFromJsonAsAsyncEnumerable<TValue>(HttpContent, JsonSerializerOptions, CancellationToken)

Přečte obsah HTTP a vrátí hodnotu, která má za následek deserializaci obsahu jako JSON v asynchronní enumerovatelné operaci.

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

Přečte obsah HTTP a vrátí hodnotu, která má za následek deserializaci obsahu jako JSON v asynchronní enumerovatelné operaci.

ReadFromJsonAsAsyncEnumerable<TValue>(HttpContent, CancellationToken)

Přečte obsah HTTP a vrátí hodnotu, která má za následek deserializaci obsahu jako JSON v asynchronní enumerovatelné operaci.

ReadFromJsonAsync(HttpContent, Type, JsonSerializerOptions, CancellationToken)

Přečte obsah HTTP a vrátí hodnotu, která má za následek deserializaci obsahu jako JSON v asynchronní operaci.

ReadFromJsonAsync(HttpContent, Type, JsonSerializerContext, CancellationToken)

Přečte obsah HTTP a vrátí hodnotu, která má za následek deserializaci obsahu jako JSON v asynchronní operaci.

ReadFromJsonAsync(HttpContent, Type, CancellationToken)

Přečte obsah HTTP a vrátí hodnotu, která má za následek deserializaci obsahu jako JSON v asynchronní operaci.

ReadFromJsonAsync<T>(HttpContent, JsonSerializerOptions, CancellationToken)

Přečte obsah HTTP a vrátí hodnotu, která má za následek deserializaci obsahu jako JSON v asynchronní operaci.

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

Přečte obsah HTTP a vrátí hodnotu, která má za následek deserializaci obsahu jako JSON v asynchronní operaci.

ReadFromJsonAsync<T>(HttpContent, CancellationToken)

Přečte obsah HTTP a vrátí hodnotu, která má za následek deserializaci obsahu jako JSON v asynchronní operaci.

Platí pro