HttpContent Класс

Определение

Базовый класс, представляющий заголовки содержимого и тело сущности HTTP.

public ref class HttpContent abstract : IDisposable
public abstract class HttpContent : IDisposable
type HttpContent = class
    interface IDisposable
Public MustInherit Class HttpContent
Implements IDisposable
Наследование
HttpContent
Производный
Реализации

Примеры

В следующем примере показана пользовательская реализация HttpContent. Некоторые методы, несмотря на то, что они определены как virtual и не abstractопределены как , по-прежнему должны быть переопределены в реализации для оптимального поведения.

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

Комментарии

Существуют различные содержимое HTTP, которые можно использовать. К ним относятся следующие.

  1. ByteArrayContent — Содержимое, представленное массивом байтов, также служит базовым классом для StringContent и FormUrlEncodedContent.

  2. StringContent — содержимое на основе строк, сериализуемое по умолчанию как text/plainContent-Type с UTF-8 кодировкой.

  3. FormUrlEncodedContent — содержимое с кортежами имени и значения, сериализованными как application/x-www-form-urlencodedContent-Type.

  4. MultipartContent — содержимое, которое может сериализовать несколько разных HttpContent объектов в виде multipart/*Content-Type.

  5. JsonContent — содержимое, сериализующее объекты как application/jsonContent-Type с UTF-8 кодировкой по умолчанию.

Класс контента HTTP может быть получен пользователем для предоставления пользовательской логики сериализации содержимого.

Конструкторы

HttpContent()

Инициализирует новый экземпляр класса HttpContent.

Свойства

Headers

Получает заголовки содержимого HTTP, определенные в RFC 2616.

Методы

CopyTo(Stream, TransportContext, CancellationToken)

Сериализует HTTP-содержимое в поток байтов и копирует его в stream.

CopyToAsync(Stream)

Сериализирует содержимое HTTP в поток байтов и копирует его в объект потока, предоставленный как параметр stream.

CopyToAsync(Stream, CancellationToken)

Сериализирует содержимое HTTP в поток байтов и копирует его в объект потока, предоставленный как параметр stream.

CopyToAsync(Stream, TransportContext)

Сериализирует содержимое HTTP в поток байтов и копирует его в объект потока, предоставленный как параметр stream.

CopyToAsync(Stream, TransportContext, CancellationToken)

Сериализирует содержимое HTTP в поток байтов и копирует его в объект потока, предоставленный как параметр stream.

CreateContentReadStream(CancellationToken)

Сериализует содержимое HTTP в поток памяти.

CreateContentReadStreamAsync()

Сериализация содержимого HTTP в поток в памяти в качестве асинхронной операции.

CreateContentReadStreamAsync(CancellationToken)

Выполняет сериализацию содержимого HTTP в поток в памяти в качестве асинхронной операции.

Dispose()

Освобождает неуправляемые ресурсы и удаляет управляемые ресурсы, используемые объектом HttpContent.

Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые объектом HttpContent, и опционально удаляет управляемые ресурсы.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
LoadIntoBufferAsync()

Сериализация содержимого HTTP в буфер памяти в виде асинхронной операции.

LoadIntoBufferAsync(Int64)

Сериализация содержимого HTTP в буфер памяти в виде асинхронной операции.

MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ReadAsByteArrayAsync()

Сериализация содержимого HTTP в массив байтов в виде асинхронной операции.

ReadAsByteArrayAsync(CancellationToken)

Сериализация содержимого HTTP в массив байтов в виде асинхронной операции.

ReadAsStream()

Сериализует HTTP-содержимое и возвращает поток, представляющий содержимое.

ReadAsStream(CancellationToken)

Сериализует HTTP-содержимое и возвращает поток, представляющий содержимое.

ReadAsStreamAsync()

Сериализует HTTP-содержимое и возвращает поток, представляющий содержимое в асинхронной операции.

ReadAsStreamAsync(CancellationToken)

Сериализует HTTP-содержимое и возвращает поток, представляющий содержимое в асинхронной операции.

ReadAsStringAsync()

Сериализация содержимого HTTP в строку в качестве асинхронной операции.

ReadAsStringAsync(CancellationToken)

Сериализация содержимого HTTP в строку в качестве асинхронной операции.

SerializeToStream(Stream, TransportContext, CancellationToken)

При переопределении в производном классе сериализует HTTP-содержимое в поток. В противном случае создается исключение NotSupportedException.

SerializeToStreamAsync(Stream, TransportContext)

Сериализация содержимого HTTP в поток в качестве асинхронной операции.

SerializeToStreamAsync(Stream, TransportContext, CancellationToken)

Сериализация содержимого HTTP в поток в качестве асинхронной операции.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)
TryComputeLength(Int64)

Определяет, имеет ли содержимое HTTP допустимую длину в байтах.

Методы расширения

ReadFromJsonAsAsyncEnumerable<TValue>(HttpContent, JsonSerializerOptions, CancellationToken)

Считывает содержимое HTTP и возвращает значение, полученное в результате десериализации содержимого в виде JSON в асинхронной операции перечисления.

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

Считывает содержимое HTTP и возвращает значение, полученное в результате десериализации содержимого в виде JSON в асинхронной операции перечисления.

ReadFromJsonAsAsyncEnumerable<TValue>(HttpContent, CancellationToken)

Считывает содержимое HTTP и возвращает значение, полученное в результате десериализации содержимого в виде JSON в асинхронной операции перечисления.

ReadFromJsonAsync(HttpContent, Type, JsonSerializerOptions, CancellationToken)

Считывает содержимое HTTP и возвращает значение, полученное в результате десериализации содержимого в виде JSON в асинхронной операции.

ReadFromJsonAsync(HttpContent, Type, JsonSerializerContext, CancellationToken)

Считывает содержимое HTTP и возвращает значение, полученное в результате десериализации содержимого в виде JSON в асинхронной операции.

ReadFromJsonAsync(HttpContent, Type, CancellationToken)

Считывает содержимое HTTP и возвращает значение, полученное в результате десериализации содержимого в виде JSON в асинхронной операции.

ReadFromJsonAsync<T>(HttpContent, JsonSerializerOptions, CancellationToken)

Считывает содержимое HTTP и возвращает значение, полученное в результате десериализации содержимого в виде JSON в асинхронной операции.

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

Считывает содержимое HTTP и возвращает значение, полученное в результате десериализации содержимого в виде JSON в асинхронной операции.

ReadFromJsonAsync<T>(HttpContent, CancellationToken)

Считывает содержимое HTTP и возвращает значение, полученное в результате десериализации содержимого в виде JSON в асинхронной операции.

Применяется к