このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
パッケージ:matlab.net.http.io
スーパークラス:处理
,matlab.mixin.Heterogeneous
HTTPメッセージペイロードのContentProvider
内容提供者は,メッセージの送信中にHTTPRequestMessage
のデータを提供します。簡単なものとしては、データを MATLAB®型からバイトストリームに変換するプロバイダーがあります。より複雑なプロバイダーでは,データをサーバーにストリーミングできます。この場合,データの取得や生成を送信と同時に行えるため、メッセージの開始前にすべてのデータをメモリに読み込む必要がありません。
通常,データをWebサービスに送信するときは(把要求または帖子要求が一般的),RequestMessage
を作成し,データをMessageBody
オブジェクトの形式でRequestMessage。身体
プロパティに挿入します。そのメッセージをRequestMessage.send
を使用して送信すると,そのデータがサーバーに送信するバイトストリームに変換されます。この変換は,メッセージの- typeと的身体。数据
のデータのタイプに基づいてMATLABで行われます。この変換ルールについては,MessageBody。数据
を参照してください。
MessageBody
オブジェクトをRequestMessage。身体
プロパティに挿入する代わりに,内容提供者
オブジェクトを作成して挿入することができます。この場合,メッセージを送信すると、MATLAB で内容提供者
のメソッドが呼び出され,送信するデータのバッファーがメッセージの送信中に取得されます。
メッセージにMessageBody
または内容提供者
のどちらを挿入した場合も,RequestMessage.send
の呼び出しはメッセージ全体が送信されて応答を受信するか,エラーが発生するまで戻りません(ブロックされます)。ただし,内容提供者
の場合は,送信がブロックされている間,送信するデータのバッファーを取得するためのプロバイダーに対するコールバックがMATLABで定期的に実行されます。内容提供者
では,これらのコールバックで,ファイル,MATLAB配列,ハードウェアセンサー,MATLAB関数などの任意のソースからデータを取得できます。プロバイダーの役割は,そのデータをWebに送信できるバイトストリーム(uint8形式のバッファー)に変換することです。
内容提供者
は,クラスの作成者が独自のデータジェネレーターやデータコンバーターを使用してサブクラス化できるように設計された抽象クラスです。また,MATLABプロバイダーのいずれかを使用(またはサブクラス化)すれば,サブクラスを記述せずにさまざまなソースからデータを生成させることができます。これらのプロバイダーには,データをMessageBody
に直接挿入する場合に実行される自動変換に比べて,データの取得方法や変換方法をより柔軟に制御できるオプションがあります。次のいずれかの内容提供者
サブクラスを使用します。
データをストリーミングする必要がない場合でも,これらのプロバイダーのいずれかを使用すると,データが内部形式からuint8
ストリームに変換されるため,特定のタイプの内容を送信する処理が簡単になります。たとえば,FormProvider
を使用すれば,フォームの応答をサーバーに送信し,データをQueryParameter
オブジェクトの配列として表現できるので便利です。MultipartFormProvider
を使用すると,マルチパートフォームの応答を送信できるため,マルチパートフォームの応答の作成が簡単になります。内容提供者
を使用する場合は,サーバーへの送信が想定される内容のタイプを理解しておく必要があります。
matlab.net.http.io.ContentProvider
クラスは处理
クラスです。
簡単な内容提供者
であれば,MATLABから要求されたときにデータのバッファーを提供するgetData
メソッドを実装するだけで作成できます。プロバイダーを使用するには,RequestMessage
の身体
プロパティに挿入します。この例では,RequestMessage
コンストラクターの3番目の引数でMyProvider
オブジェクトを身体
に挿入しています。
提供者= MyProvider;req = matlab.net.http.RequestMessage('put', headers, provider);resp = req.send (uri);
次に,コンストラクターに引数として名前が渡されたファイルを読み取ってWebに送信するMyProvider
クラスの例を示します。この例では,処理が終了するかこのプロバイダーが削除されたときにファイルを閉じます。
class . MyProvider < matlab.net.http.io.ContentProvider属性FileID双端方法function obj = MyProvider(name)文件标识= fopen(名称);end function [data, stop] = getData(obj, length) [data, len] = fread(obj. length)文件标识、长度、“* uint8”);停止= len < length;如果(停止)文件关闭(obj.FileID);obj。文件标识= [];delete(obj) if ~isempty(obj. fileid) fclose(obj. fileid);obj。文件标识= [];端端端端
MATLABは,送信する新しいメッセージの作成中にプロバイダーの完整的
メソッドを呼び出します。これは,プロバイダーでの新しいメッセージの準備として,必要なヘッダーフィールドをメッセージに追加できるようにするためです。MATLABは,データの送信時になると,getData
の最初の呼び出しの前にプロバイダーの开始
メソッドを呼び出します。
RequestMessage
|MessageBody
|FileProvider
|StringProvider
|JSONProvider
|ImageProvider
|MultipartProvider
|FormProvider
|MultipartFormProvider
|QueryParameter
|ContentConsumer