主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

matlab.net.http.io.MultipartProviderクラス

パッケージ:matlab.net.http.io
スーパークラス:matlab.net.http.io.ContentProvider

マルチパート/混在HTTPメッセージを送信するContentProvider

説明

このプロバイダーはマルチパートHTTPメッセージの作成で役立ちます。

既定の- typeは“多部分/混合”です。メッセージのペイロードには任意の数のパートが含まれ,各パートにはそのパートを記述する独自のヘッダーが含まれています。マルチパートメッセージの詳細については,RFC 2046, 5.1節を参照してください。

このプロバイダーは,サーバーがマルチパート/混在メッセージを受け入れることが分かっている場合にのみ直接使用します。通常,マルチパートメッセージを受け入れるサーバーでは,代わりにサブクラスMultipartFormProviderで実装される“多部分/格式”を必要とします。サブクラスを使用して他のマルチパートタイプを実装できます。

matlab.net.http.io.MultipartProviderクラスは处理クラスです。

サブクラスの作成

マルチパートメッセージの各パートは,RequestMessage。身体で許可される任意の形式のデータとして,またはデータを作成する内容提供者として指定できます。パーツにデータを提供するために使用する内容提供者オブジェクトはデリゲートと呼ばれる一方,このMultipartProviderは最上位レベルのプロバイダーです。一般に,どの内容提供者もデリゲートとして適切です。MultipartProviderはメッセージの送信中に各デリゲートを順に呼び出し,完整的开始など,そのメソッドを呼び出すため,デリゲートは通常,メッセージ全体に対してではなく,1つのパートに対して内容を提供していることを覚えておく必要はありません。

このプロバイダーはRequestMessageを常にチャンク化された状態で送信するため,内容长度ヘッダーフィールドをメッセージまたは任意のパートのヘッダーに含めません。MultipartProviderがパートを送信する前に各デリゲートのexpectedContentLengthメソッドを呼び出す間,内容长度フィールドを作成するためではなく,長さを強制するために戻り値(空でない場合)のみを使用します。内容长度デリゲートでフィールドをパートに表示させない場合,プロパティにそのようなフィールドを明示的に挿入しなければなりません。MATLAB®で提供されるいずれの内容提供者サブクラスもこの処理を行いません。

作成

説明

提供者= MultipartProvider (part1,…,partNは指定したパートを指定した順序でHTTP要求で送信するMultipartProviderを作成します。既定では,このプロバイダーはメッセージの- typeを“多部分/混合”に設定しますが,サブクラスは子类型プロパティを設定してサブタイプを変更できます。コンストラクターは部分プロパティの细胞配列の要素を各part1,…,partN引数に設定します。

プロパティ

すべて展開する

パブリックプロパティ

メッセージ本文のパーツ。これらの1つ以上の値の细胞配列として指定します。

内容提供者オブジェクト

MultipartProviderはパートの作成を指定したプロバイダー(デリゲートと呼ばれる)にデリゲートし,パートに関するヘッダー情報を取得する完全なメソッドと,データを取得するgetDataメソッドを呼び出します。デリゲートのプロパティは,パートのヘッダーに使用されます。ここでは内容提供者の任意のサブクラスを指定できます。パートの終端はヘッダーフィールドではなく,边界字符串で指定されるため,通常,デリゲートは内容の長さを指定したり,expectedContentLengthメソッドを実装しません。そのメソッドが空でない値を返すように実装される場合,値は内容长度フィールドを作成するためではなく,内容の長さを強制する目的のみで使用されます。

RequestMessageオブジェクト

MultipartProviderRequestMessageおよび身体をパートとして送信します。本文の有效载荷プロパティが設定されると,生のペイロードに使用されます。それ以外の場合,本文の数据プロパティは,MessageBody。数据の説明と同じように,そのタイプまたは内の- typeフィールドに基づいて変換されます。このオプションは,送信するデータがあり,MATLABが通常RequestMessageの送信時に行う既定の処理をそのデータで活用する場合に便利です。これにより,内容提供者サブクラスを記述せずに,パートのとして使用されるようにカスタムヘッダーフィールドを要求で指定し,データの変換方法を制御することができます。RequestMessage。RequestLineプロパティは無視されます。

MessageBodyオブジェクト

MessageBodyは- typeフィールドをもたないRequestMessageに存在するかのように処理されます。このオプションは、型に基づいたデータの既定の処理が十分であり、パートにカスタム ヘッダー フィールドを指定する必要がない場合に役立ちます。MATLAB は、データの型に基づいてパートに Content-Type フィールドを挿入します。変換ルールの詳細については、MessageBody。数据を参照してください。

内容提供者オブジェクト,RequestMessageオブジェクト,MessageBodyオブジェクトの配列

配列の各要素をパートとして扱います。细胞配列ではありません。

getDataメソッドのハンドル

このメソッドはContentProvider.getDataのシグネチャをもたなければなりません。この場合、パートの Content-Type は“应用程序/八进制”に設定されるため,このオプションはバイナリデータの送信に役立ちます。このオプションを使用する場合、カスタム ヘッダー フィールドをパートに指定することはできません。

その他のタイプ

タイプが前述したどのタイプにも一致せず,関数ハンドルでもない場合,MessageBody数据プロパティに存在するかのように扱われます。MessageBodyタイプの説明を参照してください。

属性:

GetAccess
公共
SetAccess
公共
依赖
真正的

メッセージまたはパートのヘッダーフィールド。1つ以上のmatlab.net.http.HeaderFieldオブジェクトのベクトルとして指定されます。

このプロパティはサブクラスの作成にのみ使用されます。このプロパティは,プロバイダーの完整的を呼び出す前にMATLABで設定されます。マルチパートメッセージ以外については,このプロパティは,MATLABによってmatlab.net.http.field.GenericFieldsや値が空のフィールドを除いた请求。头の内容に初期化されます。内容提供者では,送信するデータを示すヘッダーフィールドを追加したり,メッセージの既存のヘッダーフィールドにパラメーターを追加したりする場合にこのプロパティを使用します。MultipartProviderのデリゲートでは,このプロパティは,MATLABによってデリゲート元のプロバイダーが挿入するパート用のヘッダーフィールドに初期化されます。これらのフィールドはデリゲートで変更が可能です。

マルチパートメッセージ以外では,プロバイダーの完整的メソッドから戻ると,MATLABはこのプロパティを読み取って,その内容を请求のヘッダーにマージします。このに含まれるフィールドの的名字请求。头にない場合,请求。头の末尾に追加されます。このに含まれるフィールドの的名字请求。头に含まれるフィールドと同じで,どちらのも空でない場合は,次のように処理されます。

  • 请求。头のフィールドがGenericFieldの場合,のフィールドは無視されます。

  • 请求。头のフィールドがGenericFieldでない場合,のフィールドに置き換えられます。

これらの一方または両方の价值が空の場合は,请求。头からフィールドが削除され,メッセージの正常な終了時にも追加されません。

MultipartProviderのデリゲートの場合は,このの内容全体がパートのヘッダーとして使用されます。マルチパートデリゲートでは,请求。头にそのに付随する任意のフィールドが含まれていると想定してはなりません。プロバイダーがマルチパートデリゲートであるかどうかはMyDelegatorMultipartProviderかどうかを確認すれば特定できますが,このテストが必要になることはほとんどありません。

このプロパティがMATLABで読み取られるのは,プロバイダーの完整的メソッドの呼び出しから戻るときだけです。MATLABで开始が呼び出された後は,この配列に対する変更は無視されます。

クラスを作成するときは,スーパークラスで完整的を呼び出す前に,この(完整的メソッド内の)にサブクラスがフィールドを追加済みの場合があることを認識しておく必要があります。それらのフィールドは残しておいて,同じ名前のフィールドを追加しないようにすることを推奨します。ただし,フィールドへのパラメーターの追加は可能です。たとえば,既存の Content-Type フィールドに charset パラメーターがない場合、スーパークラスで追加できます。

属性:

GetAccess
公共
SetAccess
公共

チャンク転送コーディングを強制するかどうかを示します。布尔として指定されます。これはサブクラスの作成にのみ関係するプロパティで,マルチパートデリゲート以外のプロバイダーにのみ該当します。サブクラスでは,ForceChunkedを設定することで,内容の送信にチャンク転送コーディングを使用するかどうかを制御します。(既定)の場合,MATLABは,メッセージの送信準備ができた時点で内容の長さがわかっているかどうかに基づいて,内容をチャンク化して送信するかどうかを決定します。

  • MATLABで内容の長さがわかっている場合(メッセージに内容长度フィールドがあるか,このプロバイダーのexpectedContentLengthメソッドから数値が返された場合),チャンク化して送信するかどうかをMATLABで決定します。

  • MATLABで内容の長さがわからない場合(ヘッダーに内容长度フィールドがないか,expectedContentLengthの戻り値が空の場合),MATLABはメッセージを常にチャンク化して送信します。

ForceChunked真正的の場合,内容の長さがわかっているかどうかに関係なく,既知の長さがチャンクサイズに満たない場合を除き,MATLABはメッセージをチャンク化して送信します。このプロパティが真正的の場合は,メッセージに内容长度フィールドを含めてはなりません。HTTPではチャンクされたメッセージに内容长度フィールドを含めることが許可されないためです。ただし,想定されるデータの長さを返しているかをMATLABで検証する場合は,expectedContentLengthメソッドで非ゼロの値を返すことができます。

MATLABでメッセージをチャンク化して送信する場合,各チャンクのサイズはgetDataで返されたデータの長さと等しくなります。

MATLABは,完整的メソッドを呼び出してから开始を呼び出すまでの間にこの値を読み取ります。このフィールドの設定は行いません。

属性:

GetAccess
公共
SetAccess
公共

送信する要求メッセージ。matlab.net.http.RequestMessageオブジェクトとして指定されます。

このプロパティはサブクラスの作成にのみ使用されます。このプロパティは,このプロバイダーで他のメソッドを呼び出す前であり、かつヘッダー フィールドを追加したりメッセージを検証したりする前に、このプロバイダーが身体に配置されたRequestMessageRequestMessage.sendメソッドとRequestMessage.completeメソッドで設定されます。プロバイダーは,このメッセージを調べて元の要求の内容を確認できます。

デリゲートの場合,このプロパティの値はデリゲーターと同じになります。内容提供者がデリゲートである場合は,必ずしも要求メッセージの本文全体を提供するわけではないため,この请求のヘッダーフィールドがそのプロバイダーで提供するデータに関連するものであるとは限らないことに注意が必要です。通常,デリゲートでは,この要求のデータ関連のヘッダーフィールド(内容类型など)は無視します。

このメッセージへのヘッダーフィールドの追加や既存のヘッダーフィールドの変更をプロバイダーで行う場合は,完整的メソッドでプロパティにそれらのフィールドを追加します。それらのフィールドに対する処理は,完整的の呼び出し元(RequestMessageまたはデリゲート元のプロバイダー)で決定されます。RequestMessage.sendRequestMessage.completeは,それらのフィールドをRequestMessageに常にコピーします。デリゲート元のプロバイダーでは,フィールドをそれぞれのプロパティにコピーしたりメッセージに挿入したりできます(MultipartProviderの場合と同様)。詳細については,プロパティを参照してください。

このプロパティは読み取り専用です。

属性:

GetAccess 公共
SetAccess matlab.net.http.RequestMessage

保護プロパティ

プロバイダーのサブタイプ。字符串として指定します。既定の値“混合”は,“多部分/混合”に設定された- typeヘッダーをメッセージと適切なパラメーターに追加します。サブクラスはコンストラクターまたは完整的メソッドでこの値を変更できます。この値は“多部分/”の後の- typeに表示されます。

属性:

GetAccess
受保护的
SetAccess
受保护的

このプロバイダーのデリゲート先の内容提供者matlab.net.http.io.ContentProviderオブジェクトとして指定されます。このプロパティは,現在のデリゲート先のプロバイダーを示すために呼び出し元のプロバイダー (デリゲーター) のdelegateToメソッドで設定されます。現在のデリゲーションがない場合,値は空です。

このプロパティは完整的メソッドで空に設定されます。

属性:

GetAccess
受保护的
SetAccess
受保护的

このプロバイダーのデリゲート元の内容提供者matlab.net.http.io.ContentProviderオブジェクトとして指定されます。

このプロパティは,内容提供者から別のプロバイダーにメッセージのすべてまたは一部のデータの送信がデリゲートされている場合に,デリゲート元のプロバイダーを示します。たとえば,MultipartProviderはメッセージのパートを他のプロバイダーにデリゲートするため,各デリゲートに自身のハンドルを挿入します。それ以外の場合,MyDelegatorは空です。このプロパティは,デリゲートのdelegateToメソッドで設定されます。

属性:

GetAccess
受保护的
SetAccess
受保护的

メソッド

すべて展開する

詳細

すべて展開する

R2018aで導入