putData

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

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

Синтаксис

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

Описание

[len,stop] = putData(consumer,data) преобразует data в Юникод® строка с использованием текущего значения свойства Charset и добавляет результаты к Response.Body.Data. Во время этого процесса преобразованная в данный момент строка находится на Response.Body.Data. Если свойство TextType 'char', затем только символы до CurrenLength действительны.

Если data является [], это указывает конец сообщения. По возвращении, Response.Body.Data содержит целую преобразованную строку или вектор символов.

Для многобайтовых кодировок, таких как UTF-8, возможно, что заданный буфер data заканчивается частичным многобайтовым символом. В этом случае Response.Body.Data может отсутствовать последний символ до следующего вызова на putData завершает его.

Этот метод является переопределенным методом putData. Если вы реализуете подкласс этого потребителя и хотите изучить необработанные байты перед преобразованием charset, то переопределите этот метод, исследуйте data, изменить Charset свойство при необходимости, а затем пройти data к этому суперклассу метод для преобразования и хранения в Response.Body.Data. Если вы меняете Charset после putData уже вызван для обработки предыдущих буферов, следует иметь в виду, что частичный многобайтовый символ в конце предыдущего буфера, который еще не был преобразован, может быть потерян. Это не произойдет, если все ранее полученные символы являются однобайтовыми (для примера, 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 содержит самые последние добавленные данные после преобразования. Обратите внимание, что вышеописанный шаблон все еще хранит получившуюся строку в Response.Body.Data.

Если ваш подкласс хочет передать свои собственные результаты в ответ после обработки строки, используйте convert метод для преобразования ваших данных на основе TextType и Charset в этом объекте. В этом случае вызывайте это putData метод только в конце данных с пустым аргументом.

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

расширить все

Потребитель содержимого, заданный как matlab.net.http.io.StringConsumer объект.

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

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

расширить все

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

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

Признаки

Accesspublic

Примеры

Для примера подкласса этого метода смотрите PricesStreamer классы putData метод в отображении Streamed Data in Окно Фигуры.

Введенный в R2018a