HttpContent クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
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- バイト配列で表されるコンテンツは、 および FormUrlEncodedContentの基底クラスStringContentとしても機能します。
StringContent- 文字列ベースのコンテンツ。既定ではエンコードと
UTF-8
同様にtext/plain
Content-Type
シリアル化されます。FormUrlEncodedContent - 名前/値のタプルが として
application/x-www-form-urlencoded
Content-Type
シリアル化されたコンテンツ。MultipartContent - 複数の異なる HttpContent オブジェクトを として
multipart/*
Content-Type
シリアル化できるコンテンツ。JsonContent - 既定でエンコードを使用して として
application/json
Content-Type
オブジェクトをUTF-8
シリアル化するコンテンツ。
HTTP コンテンツ クラスは、ユーザーがカスタム コンテンツシリアル化ロジックを提供するために派生させることができます。
コンストラクター
HttpContent() |
HttpContent クラスの新しいインスタンスを初期化します。 |
プロパティ
Headers |
RFC 2616 で定義されているように HTTP コンテンツ ヘッダーを取得します。 |
メソッド
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 コンテンツが有効なバイト長であるかどうかを判断します。 |
拡張メソッド
適用対象
.NET
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示