Прочитать на английском

Поделиться через


HttpContent Класс

Определение

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

public abstract class HttpContent : 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 — содержимое с кортежами name/value, сериализованным как 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, CancellationToken)

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

CopyToAsync(Stream, TransportContext, CancellationToken)

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

CopyToAsync(Stream, TransportContext)

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

CopyToAsync(Stream)

Сериализируйте содержимое 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(CancellationToken)

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

LoadIntoBufferAsync(Int64, CancellationToken)

Сериализуйте содержимое 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, CancellationToken)

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

SerializeToStreamAsync(Stream, TransportContext)

Сериализуйте содержимое 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 в асинхронной операции.

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

Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0