このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。
パッケージ:matlab.net.http.io
スーパークラス:matlab.net.http.io.GenericConsumer
HTTPメッセージ内のマルチパートコンテンツタイプのヘルパー
このコンシューマーはマルチパートHTTP応答メッセージを处理します。マルチパートメッセージは,その内容类型ヘッダーフィールドに“扇形”
が指定されていて,本文には1つ以上の部分が含まれているものです。各部分には,部分を記述する独自のヘッダーフィールドのセットが含まれていますが,それらで最も重要なものは- typeフィールドです。
matlab.net.http.io.MultipartConsumer
クラスは处理
クラスです。
独自のContentConsumer
を作成している場合,これが最上位のコンシューマー(RequestMessage.send
メソッドの3番目の引数として指定されている)でもマルチパートメッセージのパート(MultipartConsumer
コンストラクターの呼び出しの “デリゲート” として指定されている场合)でも机能します。MultipartConsumer
により,各デリゲートが応答メッセージ全体を処理しているように見えますが,実際には,結果を組み立てて,返されたresponse.Body.Data
プロパティに格納されるResponseMessages
の配列に設定しています。
次に,MultipartConsumer
の動作について説明します。
このMultipartConsumer
がサーバーから完全なメッセージのパートを受信する場合,このパート内にヘッダーがあれば,これを解析して,このパート内の- typeフィールドに適したデリゲートコンシューマーを呼び出します。このパートに- typeフィールドがない場合,タイプは文本/平原
であると想定されます。このタイプを処理できるデリゲートがない場合、GenericConsumer
の记述に従って,Content-Type的に基づいてパートの既定の处理を使用します。
MultipartConsumer
は,完全なパートを受信するまでデリゲートを呼び出しません。MultipartConsumer
は,パートのデータをバッファーして,パートの受信の最後には,ContentConsumer
の表示されているプロパティすべてをこのコンシューマーからデリゲートにコピーします。デリゲートの响应。身体
をクリアし,デリゲートの头
をパートのヘッダーに設定してから,デリゲートの初始化
メソッドおよび开始
メソッドを呼び出します。その后,パートのペイロードを含むデリゲートのputData
メソッドが1回以上呼び出され,データ終了を示すputData (uint8.empty)
の呼び出しが続きます。デリゲートの初始化
メソッドが,パートを处理しないことを示すために错误的
を返す場合,パートのペイロードは,GenericConsumer
の記述に従って,パートの- typeの既定の動作を使用して処理されます。
デリゲートの开始
メソッドが,目的の最大バッファーサイズがないことを示すために[]
を返す場合,MultipartConsumer
は,パートのペイロード全体を提供するputData
への呼び出しを一度だけ行い,データ終了呼び出しが続きます。それ以外の場合は,バッファーサイズの単位内のペイロード全体を提供するために十分な回数putData
を呼び出します。
デリゲートのputData
メソッドが,さらにデータを必要としないことを示すために停止
戻り値を真的
に设定する场合,MultipartConsumer
はメッセージが终了していたかのように転送を终了するために接続を闭じます。このように,デリゲートは元のメッセージの残りを处理するかどうかを制御します。putData
が[]
の尺寸
を返す場合,メッセージも終了しますが,RequestMessage.send
の呼び出し元に例外がスローされます。
パートのコンシューマーがContentConsumer
インスタンスではなく关数ハンドルとして指定されている场合,关数はコンシューマーが最初に必要になったときにのみ呼び出され,同じ応答メッセージの后続の该当するパートに対してはいずれも同じコンシューマーインスタンスが使用されます。关数ハンドルで处理されたパートについては,关数からはResponseMessage
の本文にアクセスできないため,Response.Body.Data
の対応するResponseMessage
にパートのヘッダーのみが格納されます。
デリゲートされたコンシューマーはMyDelegator
プロパティを通してこのコンシューマーとそのプロパティにアクセスできますが,この处理が必要になることはほとんどありません。
ResponseMessage
|RequestMessage
|GenericConsumer
|FileConsumer
|的ImageConsumer
|MediaType
|邮件正文
|MultipartProvider