Класс: 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 метод только в конце данных, с пустым аргументом.
Access | public |
Пример подкласса этого метода см. в разделе PricesStreamer класс putData в окне «Отображение потоковых данных на рисунке».