主要内容

putData

类: matlab.net.http.io.StringConsumer
命名空间: matlab.net.http.io

将下一个字符串数据缓冲区追加到响应中

语法

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

说明

[len,stop] = putData(consumer,data) 使用 Charset 属性的当前值将 data 转换为 Unicode® 字符串,并将结果追加到 Response.Body.Data 中。在此过程中,当前转换的字符串位于 Response.Body.Data 处。如果 TextType 属性为 'char',则最多只有 CurrenLength 个字符有效。

如果 data[],则表示消息结束。返回时,Response.Body.Data 包含整个转换后的字符串或字符向量。

对于多字节编码(如 UTF-8),给定的 data 缓冲区的末尾有可能是一个不完整的多字节字符。在这种情况下,Response.Body.Data 可能会丢失最后一个字符,直到下一次调用 putData 才补全。

此方法可覆盖 putData。如果您实现此使用程序的子类,并希望在进行字符集转换之前检查原始字节,则可以覆盖此方法,检查 data,更改 Charset 属性(如有必要),然后将 data 传递给此超类方法进行转换并存储在 Response.Body.Data 中。如果您在已经调用 putData 处理先前的缓冲区之后再更改 Charset,请注意,位于上一个缓冲区末尾尚未转换的不完整多字节字符可能会丢失。如果以前收到的所有字符均为单字节(例如,US-ASCII,或者 UTF-8 的 ASCII 子集),则不会发生这种情况。

更有可能的情况是,您希望在进行字符集转换后,在收到每个数据缓冲区的同时对它进行检查。要实现此目的,请按如下所示覆盖此方法(无论 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 包含转换后最近添加的数据。请注意,上述模式仍将结果字符串存储在 Response.Body.Data 中。

如果您的子类要在处理完字符串后将自己的结果以流方式传输到响应中,请使用 convert 方法根据此对象中的 TextTypeCharset 转换您的数据。在这种情况下,只在数据末尾使用空参量调用 putData 方法。

输入参数

全部展开

内容使用程序,指定为 matlab.net.http.io.StringConsumer 对象。

matlab.net.http.ResponseMessage 对象中的原始数据缓冲区,指定为非空 uint8 向量、uint8.empty[]。有关这些值的详细信息,请参阅 ContentConsumer.putData 方法的data输入参量。

输出参量

全部展开

已处理的数据的长度,以双精度值或空双精度值形式返回。有关详细信息,请参阅 ContentConsumer.putData 中的 size 参量。

指示是否接收来自此消息的更多数据,返回为 truefalse。有关详细信息,请参阅 ContentConsumer.putData 中的 stop 参量。

属性

Accesspublic

示例

有关子类化此方法的示例,请参阅Display Streamed Data in Figure Window中的 PricesStreamer 类的 putData 方法。

版本历史记录

在 R2018a 中推出