exponenta event banner

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 является 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. Дополнительные сведения см. в аргументе stop в разделе ContentConsumer.putData.

Признаки

Accesspublic

Примеры

Пример подкласса этого метода см. в разделе PricesStreamer класс putData в окне «Отображение потоковых данных на рисунке».

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