putData

Класс: matlab.net.http.io.StringConsumer
Пакет: matlab.net.http.io

Добавьте следующий буфер данных о строке к ответу

Синтаксис

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

Описание

[len,stop] = putData(consumer,data) преобразует data к строке Unicode® с помощью текущего значения свойства Charset и добавляет результаты к 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. Если вы изменяете Charset после putData был уже назван, чтобы обработать предыдущие буферы, иметь в виду, что мог быть потерян неполный многобайтовый символ в конце предыдущего буфера, который еще не был преобразован. Это не произошло бы, если все символы, ранее полученные, являются однобайтовыми (например, US-ASCII или подмножество ASCII UTF-8).

Более вероятный сценарий - то, что вы хотите исследовать каждый буфер данных, когда это прибывает после преобразования набора символов. Для этого замените этот метод можно следующим образом (это работает ли TextType ischar или 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 метод, чтобы преобразовать ваши данные на основе TextType и Charset в этом объекте. В этом случае вызовите этот putData метод только в конце данных, с пустым аргументом.

Входные параметры

развернуть все

Потребитель содержимого в виде matlab.net.http.io.StringConsumer объект.

Буфер необработанных данных в matlab.net.http.ResponseMessage объект в виде непустого uint8 вектор, uint8.empty, или []. Для получения дополнительной информации об этих значениях, смотрите аргумент ввода данных для ContentConsumer.putData метод.

Выходные аргументы

развернуть все

Длина обработанных данных, возвратилась как двойная или пустая дважды. Для получения дополнительной информации смотрите аргумент размера в ContentConsumer.putData.

Укажите, получить ли дальнейшие данные из этого сообщения, возвращенного как true или false. Для получения дополнительной информации смотрите аргумент остановки в ContentConsumer.putData.

Атрибуты

Accesspublic

Примеры

Для примера, разделяющего этот метод на подклассы, смотрите PricesStreamer класс putData метод в Отображении Переданные потоком Данные в Окне фигуры.

Введенный в R2018a