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


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 — содержимое с кортежами 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)

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

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

LoadIntoBufferAsync(Int64)

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

LoadIntoBufferAsync(Int64, CancellationToken)

Базовый класс, представляющий текст сущности 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 в асинхронной операции.

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