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, которые можно использовать. К ним относятся следующие.
ByteArrayContent — Содержимое, представленное массивом байтов, также служит базовым классом для StringContent и FormUrlEncodedContent.
StringContent — содержимое на основе строк, сериализуемое по умолчанию как
text/plain
Content-Type
сUTF-8
кодировкой.FormUrlEncodedContent — содержимое с кортежами имени и значения, сериализованными как
application/x-www-form-urlencoded
Content-Type
.MultipartContent — содержимое, которое может сериализовать несколько разных HttpContent объектов в виде
multipart/*
Content-Type
.JsonContent — содержимое, сериализующее объекты как
application/json
Content-Type
сUTF-8
кодировкой по умолчанию.
Класс контента HTTP может быть получен пользователем для предоставления пользовательской логики сериализации содержимого.
Конструкторы
HttpContent() |
Инициализирует новый экземпляр класса HttpContent. |
Свойства
Headers |
Получает заголовки содержимого HTTP, определенные в RFC 2616. |
Методы
CopyTo(Stream, TransportContext, CancellationToken) |
Сериализует HTTP-содержимое в поток байтов и копирует его в |
CopyToAsync(Stream) |
Сериализирует содержимое HTTP в поток байтов и копирует его в объект потока, предоставленный как параметр |
CopyToAsync(Stream, CancellationToken) |
Сериализирует содержимое HTTP в поток байтов и копирует его в объект потока, предоставленный как параметр |
CopyToAsync(Stream, TransportContext) |
Сериализирует содержимое HTTP в поток байтов и копирует его в объект потока, предоставленный как параметр |
CopyToAsync(Stream, TransportContext, CancellationToken) |
Сериализирует содержимое HTTP в поток байтов и копирует его в объект потока, предоставленный как параметр |
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 в асинхронной операции. |
Применяется к
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по