putData
クラス: matlab.net.http.io.StringConsumer
名前空間: matlab.net.http.io
string データの次のバッファーを応答に追加する
構文
[len,stop] = putData(consumer,data)
説明
[
は、現在の Charset プロパティの値を使用して len
,stop
] = putData(consumer
,data
)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 変換後の到着時に調べるというものです。これを行うには、このメソッドを次のようにオーバーライドします (これは TextType
が char
でも 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
メソッドを使用して、このオブジェクトの TextType
と Charset
に基づいてデータを変換します。その場合、この putData
メソッドをデータの最後でのみ空の引数で呼び出します。
入力引数
出力引数
属性
Access | public |
例
このメソッドのサブクラス化の例については、Figure ウィンドウでのストリームデータの表示の PricesStreamer
クラスの putData
メソッドを参照してください。
バージョン履歴
R2018a で導入