matlab.net.http.io.GenericProvider クラス
名前空間: matlab.net.http.io
スーパークラス: matlab.net.http.io.ContentProvider
HTTP ペイロードの汎用の ContentProvider
説明
GenericProvider
オブジェクトは、ContentProvider
サブクラスを作成する代わりに関数で生成されたカスタム データをストリーミングする場合に使用します。
matlab.net.http.io.GenericProvider
クラスは handle
クラスです。
作成
説明
provider = GenericProvider(
は、関数 getDataFcn
)getDataFcn
を使用してデータのバッファーを取得する ContentProvider
を作成します。このコンストラクターは GetDataFcn
プロパティを getDataFcn
に設定します。
provider = GenericProvider(
は、値を getDataFcn
,contentLength
)contentLength
としてメッセージのヘッダーに Content-Length フィールドを追加します。この構文は、Content-Length フィールドをヘッダーに直接追加する代わりに使用します。この場合、getDataFcn
で stop=true
が設定されるまでの間に返されるデータの長さがこの長さと厳密に等しくなります。
provider = GenericProvider(
は追加のオプションを使用して getDataFcn
,contentLength
,bufferSize
)ContentProvider
を作成します。contentLength
が空でない場合、コンストラクターでデータの長さが設定されます。bufferSize
が空でない場合、コンストラクターでデータ バッファーの最大サイズが設定されます。
入力引数
contentLength
— 想定されるペイロードの長さ
uint64 | 空
想定されるペイロードの長さ。uint64
として指定されます。
bufferSize
— バッファー サイズ
double
バッファー サイズ。double として指定します。
プロパティ
パブリック プロパティ
GetDataFcn
— データを取得する関数
関数ハンドル
データを取得する関数。関数ハンドルとして指定します。
属性:
GetAccess | public |
SetAccess | public |
Dependent | true |
Header
— メッセージまたはパートのヘッダー フィールド
matlab.net.http.HeaderField.empty
(既定値) | matlab.net.http.HeaderField
メッセージまたはパートのヘッダー フィールド。1 つ以上の matlab.net.http.HeaderField
オブジェクトのベクトルとして指定されます。
このプロパティはサブクラスの作成にのみ使用されます。このプロパティは、プロバイダーの complete
を呼び出す前に MATLAB® で設定されます。マルチパート メッセージ以外については、このプロパティは、MATLAB によって matlab.net.http.field.GenericFields
や値が空のフィールドを除いた Request.Header
の内容に初期化されます。ContentProvider
では、送信するデータを示すヘッダー フィールドを追加したり、メッセージの既存のヘッダー フィールドにパラメーターを追加したりする場合にこのプロパティを使用します。MultipartProvider
のデリゲートでは、このプロパティは、MATLAB によってデリゲート元のプロバイダーが挿入するパート用のヘッダー フィールドに初期化されます。これらのフィールドはデリゲートで変更が可能です。
マルチパート メッセージ以外では、プロバイダーの complete
メソッドから戻ると、MATLAB はこのプロパティを読み取って、その内容を Request
のヘッダーにマージします。この Header
に含まれるフィールドの Names
が Request.Header
にない場合、Request.Header
の末尾に追加されます。この Header
に含まれるフィールドの Name
が Request.Header
に含まれるフィールドと同じで、どちらの Values
も空でない場合は、次のように処理されます。
Request.Header
のフィールドがGenericField
の場合、Header
のフィールドは無視されます。Request.Header
のフィールドがGenericField
でない場合、Header
のフィールドに置き換えられます。
これらの一方または両方の Value
が空の場合は、Request.Header
からフィールドが削除され、メッセージの正常な終了時にも追加されません。
MultipartProvider
のデリゲートの場合は、この Header
の内容全体がパートのヘッダーとして使用されます。マルチパート デリゲートでは、Request.Header
にその Header
に付随する任意のフィールドが含まれていると想定してはなりません。プロバイダーがマルチパート デリゲートであるかどうかは MyDelegator
が MultipartProvider
かどうかを確認すれば特定できますが、このテストが必要になることはほとんどありません。
このプロパティが MATLAB で読み取られるのは、プロバイダーの complete
メソッドの呼び出しから戻るときだけです。MATLAB で start
が呼び出された後は、この配列に対する変更は無視されます。
クラスを作成するときは、スーパークラスで complete
を呼び出す前に、この (complete
メソッド内の) Header
にサブクラスがフィールドを追加済みの場合があることを認識しておく必要があります。それらのフィールドは残しておいて、同じ名前のフィールドを追加しないようにすることを推奨します。ただし、フィールドへのパラメーターの追加は可能です。たとえば、既存の Content-Type フィールドに charset パラメーターがない場合、スーパークラスで追加できます。
属性:
GetAccess | public |
SetAccess | public |
ForceChunked
— チャンク転送コーディングを強制するかどうかを示す
false
(既定値) | true
チャンク転送コーディングを強制するかどうかを示します。boolean として指定されます。これはサブクラスの作成にのみ関係するプロパティで、マルチパート デリゲート以外のプロバイダーにのみ該当します。サブクラスでは、ForceChunked
を設定することで、内容の送信にチャンク転送コーディングを使用するかどうかを制御します。false
(既定) の場合、MATLAB は、メッセージの送信準備ができた時点で内容の長さがわかっているかどうかに基づいて、内容をチャンク化して送信するかどうかを決定します。
MATLAB で内容の長さがわかっている場合 (メッセージに Content-Length フィールドがあるか、このプロバイダーの
expectedContentLength
メソッドから数値が返された場合)、チャンク化して送信するかどうかを MATLAB で決定します。MATLAB で内容の長さがわからない場合 (ヘッダーに Content-Length フィールドがないか、
expectedContentLength
の戻り値が空の場合)、MATLAB はメッセージを常にチャンク化して送信します。
ForceChunked
が true
の場合、内容の長さがわかっているかどうかに関係なく、既知の長さがチャンク サイズに満たない場合を除き、MATLAB はメッセージをチャンク化して送信します。このプロパティが true
の場合は、メッセージに Content-Length フィールドを含めてはなりません。HTTP ではチャンクされたメッセージに Content-Length フィールドを含めることが許可されないためです。ただし、想定されるデータの長さを返しているかを MATLAB で検証する場合は、expectedContentLength
メソッドで非ゼロの値を返すことができます。
MATLAB でメッセージをチャンク化して送信する場合、各チャンクのサイズは getData
で返されたデータの長さと等しくなります。
MATLAB は、complete
メソッドを呼び出してから start
を呼び出すまでの間にこの値を読み取ります。このフィールドの設定は行いません。
属性:
GetAccess | public |
SetAccess | public |
Request
— 送信する要求メッセージ
matlab.net.http.RequestMessage
送信する要求メッセージ。matlab.net.http.RequestMessage
オブジェクトとして指定されます。
このプロパティはサブクラスの作成にのみ使用されます。このプロパティは、このプロバイダーで他のメソッドを呼び出す前であり、かつヘッダー フィールドを追加したりメッセージを検証したりする前に、このプロバイダーが Body
に配置された RequestMessage
に RequestMessage.send
メソッドと RequestMessage.complete
メソッドで設定されます。プロバイダーは、このメッセージを調べて元の要求の内容を確認できます。
デリゲートの場合、このプロパティの値はデリゲーターと同じになります。ContentProviders
がデリゲートである場合は、必ずしも要求メッセージの本文全体を提供するわけではないため、この Request のヘッダー フィールドがそのプロバイダーで提供するデータに関連するものであるとは限らないことに注意が必要です。通常、デリゲートでは、この要求のデータ関連のヘッダー フィールド (Content-Type など) は無視します。
このメッセージへのヘッダー フィールドの追加や既存のヘッダー フィールドの変更をプロバイダーで行う場合は、complete
メソッドで Header
プロパティにそれらのフィールドを追加します。それらのフィールドに対する処理は、complete
の呼び出し元 (RequestMessage
またはデリゲート元のプロバイダー) で決定されます。RequestMessage.send
と RequestMessage.complete
は、それらのフィールドを RequestMessage
の Header
に常にコピーします。デリゲート元のプロバイダーでは、フィールドをそれぞれの Header
プロパティにコピーしたりメッセージに挿入したりできます (MultipartProvider
の場合と同様)。詳細については、Header プロパティを参照してください。
このプロパティは読み取り専用です。
属性:
GetAccess | public |
SetAccess | matlab.net.http.RequestMessage |
保護プロパティ
CurrentDelegate
— このプロバイダーのデリゲート先の ContentProvider
matlab.net.http.io.ContentProvider
| 空
このプロバイダーのデリゲート先の ContentProvider
。matlab.net.http.io.ContentProvider
オブジェクトとして指定されます。このプロパティは、現在のデリゲート先のプロバイダーを示すために呼び出し元のプロバイダー (デリゲーター) の delegateTo
メソッドで設定されます。現在のデリゲーションがない場合、値は空です。
このプロパティは complete
メソッドで空に設定されます。
属性:
GetAccess | protected |
SetAccess | protected |
MyDelegator
— このプロバイダーのデリゲート元の ContentProvider
matlab.net.http.io.ContentProvider.empty
(既定値) | matlab.net.http.io.ContentProvider
このプロバイダーのデリゲート元の ContentProvider
。matlab.net.http.io.ContentProvider
オブジェクトとして指定されます。
このプロパティは、ContentProvider
から別のプロバイダーにメッセージのすべてまたは一部のデータの送信がデリゲートされている場合に、デリゲート元のプロバイダーを示します。たとえば、MultipartProvider
はメッセージのパートを他のプロバイダーにデリゲートするため、各デリゲートに自身のハンドルを挿入します。それ以外の場合、MyDelegator
は空です。このプロパティは、デリゲートの delegateTo
メソッドで設定されます。
属性:
GetAccess | protected |
SetAccess | protected |
メソッド
パブリック メソッド
getData | GenericProvider から HTTP 要求メッセージで送信するデータの次のバッファー |
特殊な演算子と関数
次のメソッドは、MATLAB の標準の演算子および関数と継承メソッドを、このクラスのオブジェクト用に特殊化したものです。
string | string としての |
show |
|
保護されたメソッド
complete | ContentProvider の完全な HTTP ヘッダー |
preferredBufferSize | ContentProvider の推奨されるバッファー サイズ |
expectedContentLength | ContentProvider の内容の長さ |
start | ContentProvider からのデータ転送を開始する |
restartable | ContentProvider が再起動可能かどうか |
reusable | ContentProvider が再利用可能かどうか |
delegateTo | 別のプロバイダーにデリゲートする |
詳細
クラスの階層
バージョン履歴
R2018a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)