HttpContent Klasse

Definition

Eine Basisklasse, die einen HTTP-Entitätstext und Inhaltsheader darstellt.

public ref class HttpContent abstract : IDisposable
public abstract class HttpContent : IDisposable
type HttpContent = class
    interface IDisposable
Public MustInherit Class HttpContent
Implements IDisposable
Vererbung
HttpContent
Abgeleitet
Implementiert

Beispiele

Das folgende Beispiel zeigt eine benutzerdefinierte Implementierung von HttpContent. Einige Methoden sollten trotz Definition als virtual und nicht abstractin der Implementierung für ein optimales Verhalten überschrieben werden.

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

Hinweise

Es gibt verschiedene HTTP-Inhalte, die verwendet werden können. Hierzu zählen folgende:

  1. ByteArrayContent – Ein durch ein Bytearray dargestellter Inhalt dient auch als Basisklasse für StringContent und FormUrlEncodedContent.

  2. StringContent – Ein zeichenfolgenbasierter Inhalt, standardmäßig serialisiert wie text/plainContent-Type bei der UTF-8 Codierung.

  3. FormUrlEncodedContent – Ein Inhalt mit Namens-Wert-Tupeln, die als application/x-www-form-urlencodedContent-Typeserialisiert werden.

  4. MultipartContent – Ein Inhalt, der mehrere verschiedene HttpContent Objekte als multipart/*Content-Typeserialisieren kann.

  5. JsonContent – Ein Inhalt, der Objekte standardmäßig wie application/jsonContent-Type bei der UTF-8 Codierung serialisiert.

Die HTTP-Inhaltsklasse kann von einem Benutzer abgeleitet werden, um eine benutzerdefinierte Inhaltsserialisierungslogik bereitzustellen.

Konstruktoren

HttpContent()

Initialisiert eine neue Instanz der HttpContent-Klasse.

Eigenschaften

Headers

Ruft die HTTP-Inhaltsheader gemäß Definition in RFC 2616 ab.

Methoden

CopyTo(Stream, TransportContext, CancellationToken)

Serialisiert den HTTP-Inhalt in einen Bytedatenstrom und kopiert ihn in stream.

CopyToAsync(Stream)

Serialisiert den HTTP-Inhalt in einen Bytedatenstrom und kopiert ihn in das als stream-Parameter bereitgestellte Datenstromobjekt.

CopyToAsync(Stream, CancellationToken)

Serialisiert den HTTP-Inhalt in einen Bytedatenstrom und kopiert ihn in das als stream-Parameter bereitgestellte Datenstromobjekt.

CopyToAsync(Stream, TransportContext)

Serialisiert den HTTP-Inhalt in einen Bytedatenstrom und kopiert ihn in das als stream-Parameter bereitgestellte Datenstromobjekt.

CopyToAsync(Stream, TransportContext, CancellationToken)

Serialisiert den HTTP-Inhalt in einen Bytedatenstrom und kopiert ihn in das als stream-Parameter bereitgestellte Datenstromobjekt.

CreateContentReadStream(CancellationToken)

Serialisiert den HTTP-Inhalt in einen Speicherdatenstrom.

CreateContentReadStreamAsync()

Serialisiert den HTTP-Inhalt in einen Speicherdatenstrom als asynchroner Vorgang.

CreateContentReadStreamAsync(CancellationToken)

Serialisiert den HTTP-Inhalt in einen Speicherdatenstrom als asynchroner Vorgang.

Dispose()

Gibt die vom HttpContent verwendeten, nicht verwalteten Ressourcen frei und verwirft die verwalteten Ressourcen.

Dispose(Boolean)

Gibt die vom HttpContent verwendeten, nicht verwalteten Ressourcen frei und verwirft optional auch die verwalteten Ressourcen.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
LoadIntoBufferAsync()

Serialisiert den HTTP-Inhalt in einen Arbeitsspeicherpuffer als asynchroner Vorgang.

LoadIntoBufferAsync(Int64)

Serialisiert den HTTP-Inhalt in einen Arbeitsspeicherpuffer als asynchroner Vorgang.

MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ReadAsByteArrayAsync()

Serialisiert den HTTP-Inhalt in ein Bytearray als asynchroner Vorgang.

ReadAsByteArrayAsync(CancellationToken)

Serialisiert den HTTP-Inhalt in ein Bytearray als asynchroner Vorgang.

ReadAsStream()

Serialisiert den HTTP-Inhalt und gibt einen Datenstrom zurück, der den Inhalt darstellt.

ReadAsStream(CancellationToken)

Serialisiert den HTTP-Inhalt und gibt einen Datenstrom zurück, der den Inhalt darstellt.

ReadAsStreamAsync()

Serialisieren des HTTP-Inhalts und Zurückgeben eines Datenstroms, der den Inhalt darstellt, als asynchroner Vorgang.

ReadAsStreamAsync(CancellationToken)

Serialisieren des HTTP-Inhalts und Zurückgeben eines Datenstroms, der den Inhalt darstellt, als asynchroner Vorgang.

ReadAsStringAsync()

Serialisiert den HTTP-Inhalt in eine Zeichenfolge als asynchroner Vorgang.

ReadAsStringAsync(CancellationToken)

Serialisiert den HTTP-Inhalt in eine Zeichenfolge als asynchroner Vorgang.

SerializeToStream(Stream, TransportContext, CancellationToken)

Serialisiert beim Überschreiben in einer abgeleiteten Klasse den HTTP-Inhalt in einen Datenstrom. Löst andernfalls eine NotSupportedException aus.

SerializeToStreamAsync(Stream, TransportContext)

Serialisiert den HTTP-Inhalt in einen Datenstrom als asynchroner Vorgang.

SerializeToStreamAsync(Stream, TransportContext, CancellationToken)

Serialisiert den HTTP-Inhalt in einen Datenstrom als asynchroner Vorgang.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)
TryComputeLength(Int64)

Bestimmt, ob der HTTP-Inhalt eine gültige Länge in Bytes hat.

Erweiterungsmethoden

ReadFromJsonAsAsyncEnumerable<TValue>(HttpContent, JsonSerializerOptions, CancellationToken)

Liest den HTTP-Inhalt und gibt den Wert zurück, der sich aus der Deserialisierung des Inhalts als JSON in einem asynchronen aufzählbaren Vorgang ergibt.

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

Liest den HTTP-Inhalt und gibt den Wert zurück, der sich aus der Deserialisierung des Inhalts als JSON in einem asynchronen aufzählbaren Vorgang ergibt.

ReadFromJsonAsAsyncEnumerable<TValue>(HttpContent, CancellationToken)

Liest den HTTP-Inhalt und gibt den Wert zurück, der sich aus der Deserialisierung des Inhalts als JSON in einem asynchronen aufzählbaren Vorgang ergibt.

ReadFromJsonAsync(HttpContent, Type, JsonSerializerOptions, CancellationToken)

Liest den HTTP-Inhalt und gibt den Wert zurück, der sich aus dem Deserialisieren des Inhalts als JSON in einem asynchronen Vorgang ergibt.

ReadFromJsonAsync(HttpContent, Type, JsonSerializerContext, CancellationToken)

Liest den HTTP-Inhalt und gibt den Wert zurück, der sich aus dem Deserialisieren des Inhalts als JSON in einem asynchronen Vorgang ergibt.

ReadFromJsonAsync(HttpContent, Type, CancellationToken)

Liest den HTTP-Inhalt und gibt den Wert zurück, der sich aus dem Deserialisieren des Inhalts als JSON in einem asynchronen Vorgang ergibt.

ReadFromJsonAsync<T>(HttpContent, JsonSerializerOptions, CancellationToken)

Liest den HTTP-Inhalt und gibt den Wert zurück, der sich aus dem Deserialisieren des Inhalts als JSON in einem asynchronen Vorgang ergibt.

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

Liest den HTTP-Inhalt und gibt den Wert zurück, der sich aus dem Deserialisieren des Inhalts als JSON in einem asynchronen Vorgang ergibt.

ReadFromJsonAsync<T>(HttpContent, CancellationToken)

Liest den HTTP-Inhalt und gibt den Wert zurück, der sich aus dem Deserialisieren des Inhalts als JSON in einem asynchronen Vorgang ergibt.

Gilt für: