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 не завершает его.

Этот метод является переопределенным методом ContentConsumer.putData. Если вы реализуете подкласс этого потребителя и хотите исследовать необработанные байты перед преобразованием набора символов, то заменяете этот метод, исследуете data, изменяете свойство Charset при необходимости, и затем передаете data этому методу суперкласса для преобразования и устройства хранения данных в Response.Body.Data. Если вы изменяете Charset после того, как putData был уже назван, чтобы обработать предыдущие буферы, имеют в виду, что мог быть потерян неполный многобайтовый символ в конце предыдущего буфера, который еще не был преобразован. Это не произошло бы, если все символы, ранее полученные, являются однобайтовыми (например, US-ASCII или подмножество ASCII UTF-8).

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