putData

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

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

Синтаксис

[len, остановитесь] = putData (потребитель, данные)

Описание

[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.

Атрибуты

Доступpublic

Примеры

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

Представленный в R2018a

Была ли эта тема полезной?