Main Content

complete

クラス: matlab.net.http.io.ContentProvider
名前空間: matlab.net.http.io

ContentProvider の完全な HTTP ヘッダー

構文

complete(provider,URI)

説明

complete(provider,URI) は、このプロバイダーに必要なヘッダー フィールドをメッセージのヘッダーに追加します。このメソッドは、ヘッダーを検証したり既定のフィールドを追加したりする前、このクラスで expectedContentLength 以外のメソッドを呼び出す前に、RequestMessage.send メソッドと RequestMessage.complete メソッドで呼び出されます。

サブクラスでは、これを使用して、内容に応じた任意のフィールド (Content-Type など) をヘッダーに追加できます。詳細については、Header プロパティの説明を参照してください。

このメソッドは、メッセージが既に完了している場合 (RequestMessage.Completedtrue の場合) は RequestMessage メソッドで呼び出されません。ただし、完了後にメッセージに対して変更を行うと RequestMessage.Completed プロパティがリセットされ、それらのメソッドでこのメソッドを再び呼び出せるようになります。そのため、start の呼び出し前に complete を複数回呼び出せるようにプロバイダーを準備する必要があります。start が呼び出された後は、このプロバイダーの reusable で別のメッセージに再利用できることを示す true が返されない限り、このプロバイダーの complete が MATLAB® で再度呼び出されることはありません。

別の ContentProvider を拡張する ContentProvider では、最初にスーパークラスの complete メソッドを呼び出してスーパークラスに必要なヘッダー フィールドを Header に追加し、その後に必要に応じてそれらのフィールドを変更します。

このメソッドの既定の動作では何も行いませんが、このプロバイダーが開始されていて再利用可能でない場合は例外をスローします。このメソッドをオーバーライドするプロバイダーでは、常に対応するスーパークラスを呼び出す必要があります。

このプロバイダーがマルチパート デリゲートでない場合、メッセージに Content-Length フィールドを含める (結果としてチャンク転送コーディングが使用されなくなる) には、expectedContentLength で空でない値を返すか、このメソッドを実装して Header に Content-Length フィールドを挿入します。

このメソッドは、Completed プロパティが true に設定されたメッセージでは呼び出されません。つまり、通常は、このメッセージが複数回送信されても、このメソッドはメッセージごとに 1 回しか呼び出されないことになります。そのため、メッセージごとに 1 回だけ実行すればよい初期化はこのメソッドの実装で実行します。初期化には時間がかかるため、データの送信準備ができるまで実行する必要がなければ start メソッドで実行します。

入力引数

すべて展開する

コンテンツ プロバイダー。matlab.net.http.io.ContentProvider オブジェクトとして指定します。

Uniform Resource Identifier。matlab.net.URI オブジェクトとして指定します。

属性

Accessprotected

すべて展開する

SuperclassProvider を拡張して HeaderField myField を追加する ContentProvider のコーディング パターンを次に示します。

function complete(obj, uri)
            complete@SuperclassProvider(obj, uri);
            field = obj.Header.getFields('My-Field');
            if isempty(field)
                myField = HeaderField('My-Field', value);
                obj.Header = obj.Header.addFields(myField);
            end

バージョン履歴

R2018a で導入