Класс: 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 ischar или 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 метод в Отображении Переданные потоком Данные в Окне фигуры.
Набор символов | Ответ | TextType | convert | putData