Main Content

putData

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

string データの次のバッファーを応答に追加する

構文

[len,stop] = putData(consumer,data)

説明

[len,stop] = putData(consumer,data) は、現在の Charset プロパティの値を使用して data を Unicode® 文字列に変換し、結果を Response.Body.Data に追加します。この処理の実行中は、現在変換中の string が Response.Body.Data に格納されます。TextType プロパティが 'char' の場合、有効な文字は CurrenLength までになります。

data[] の場合は、メッセージの末尾であることを示します。この場合、変換された string または文字ベクトル全体が Response.Body.Data に格納されています。

UTF-8 などのマルチバイト エンコードでは、data の特定のバッファーがマルチバイト文字の途中で終了する可能性があります。その場合、次の putData の呼び出しで処理が完了するまで、最後の文字が Response.Body.Data に含まれないことがあります。

このメソッドは putData のオーバーライドされたメソッドです。このコンシューマーのサブクラスを実装して charset の変換前に生のバイトを調べる場合は、このメソッドをオーバーライドして data を確認し、必要に応じて Charset プロパティを変更してから、変換して Response.Body.Data に格納する data をこのスーパークラス メソッドに渡します。既に putData が呼び出されて前のバッファーが処理された状況で Charset を変更した場合、前のバッファーの最後にある変換されていない部分的なマルチバイト文字が失われる可能性があることに注意してください。これは、それまでに受信したすべての文字がシングルバイト (US-ASCII や ASCII の UTF-8 のサブセットなど) であれば発生しません。

よくあるシナリオは、データの各バッファーを charset 変換後の到着時に調べるというものです。これを行うには、このメソッドを次のようにオーバーライドします (これは TextTypechar でも string でも機能します)。

function [len, stop] = putData(obj, data)
    oldLength = obj.CurrentLength;                
    % send raw bytes to StringConsumer for conversion
    [len, stop] = obj.putData@matlab.net.http.io.StringConsumer(data);
    newData = obj.Response.Body.Data.extractAfter(oldLength);
    % ...process newData...

これにより、最後に追加されたデータが変換後に newData に格納されます。上記のパターンでも結果の string は Response.Body.Data に格納されることに注意してください。

string の処理後にサブクラスで独自の結果を応答にストリーミングする場合は、convert メソッドを使用して、このオブジェクトの TextTypeCharset に基づいてデータを変換します。その場合、この putData メソッドをデータの最後でのみ空の引数で呼び出します。

入力引数

すべて展開する

コンテンツ コンシューマー。matlab.net.http.io.StringConsumer オブジェクトとして指定します。

matlab.net.http.ResponseMessage オブジェクトの生データのバッファー。空でない uint8 ベクトル、uint8.empty、または [] として指定します。これらの値の詳細については、ContentConsumer.putData メソッドのdata入力引数を参照してください。

出力引数

すべて展開する

処理したデータの長さ。double または空の double として返されます。詳細については、ContentConsumer.putDatasize引数を参照してください。

このメッセージの以降のデータを受信するかどうかを示します。true または false として返されます。詳細については、ContentConsumer.putDatastop引数を参照してください。

属性

Accesspublic

このメソッドのサブクラス化の例については、Figure ウィンドウでのストリームデータの表示PricesStreamer クラスの putData メソッドを参照してください。

バージョン履歴

R2018a で導入