Пакет: matlab.net.http. iO
Суперклассы: matlab.net.http. iO . GenericConsumer
Помощник для многослойных типов контента в сообщениях HTTP
Этот потребитель процессы многослойные сообщения ответа HTTP. Многослойное сообщение является тем, поле заголовка Типа контента которого задает "multipart", и чье тело содержит одну или несколько частей. Каждая часть содержит свой собственный набор полей заголовка, описывающих часть, самым важным из которых является поле Content-Type.
создает consumer = MultipartConsumer(types,consumer) MultipartConsumer, чтобы обработать заданный types с помощью соответствующего consumer. Можно задать несколько пар аргумента в любом порядке как types1,consumer1,...,typesN,consumerN. MATLAB® ищет types в порядке, они появляются, и использует первое соответствие. Если нет никаких соответствий среди заданных типов, MATLAB использует группу по умолчанию потребителей, в зависимости от типа.
создает consumer = MultipartConsumer(puthandle) ContentConsumer, который вызывает функцию, заданную puthandle для каждого вызова метода putData этого потребителя.
| инициализировать | Подготовьте MultipartConsumer к новому сообщению HTTP |
| putData | Процесс следующий буфер данных для MultipartConsumer |
| запуск | Запустите передачу данных к MultipartConsumer |
Если вы запишете свой собственный ContentConsumer, он будет обычно работать, является ли это потребителем верхнего уровня (заданный в качестве 3-го аргумента к методу RequestMessage.send) или часть многослойного сообщения (когда задано как "делегат" в вызове конструктора MultipartConsumer). MultipartConsumer заставляет его появиться каждому делегату, как будто это обрабатывало целое сообщение ответа, на самом деле собирание результатов в массив ResponseMessages сохранило в возвращенном свойстве response.Body.Data.
Следующее описывает поведение MultipartConsumer:
Каждый раз, когда этот MultipartConsumer получает полную часть сообщения с сервера, он анализирует любые заголовки в части и затем вызывает соответствующего потребителя делегата, подходящего для поля Content-Type в части. Если нет никакого поля Content-Type в части, она принимает, что типом является text/plain. Если нет никакого делегата, который в состоянии обрабатывать тип, он использует обработку значения по умолчанию для части на основе Типа контента, как описано для GenericConsumer.
MultipartConsumer не вызывает делегата, пока он не получает полную часть. MultipartConsumer буферизует данные для части, и в конце получения части, это копирует все свойства видимости ContentConsumer от этого потребителя делегату, очищает Response.Body делегата, устанавливает Header делегата на заголовок части, и затем вызывает initialize делегата и методы start, сопровождаемые одним или несколькими вызовами метода putData делегата, содержащего полезную нагрузку части, сопровождаемой вызовом putData(uint8.empty), чтобы указать на конец данных. Если метод initialize делегата возвращает false, чтобы указать, что это не хочет обрабатывать часть, полезная нагрузка части обрабатывается с помощью поведения по умолчанию для Типа контента части, как описано для GenericConsumer.
Если метод start делегата возвращает [], чтобы указать, что нет никакого максимального желаемого buffer size, MultipartConsumer выполняет всего один вызов putData, который обеспечивает целую полезную нагрузку части, сопровождаемой к концу вызова. В противном случае это вызывает putData достаточно раз, чтобы предоставить целую полезную нагрузку в модулях buffer size.
Если метод putData делегата устанавливает возвращаемое значение STOP на true указывать, что это больше не хочет данные, то MultipartConsumer закрывает связь, чтобы закончить передачу, как будто сообщение закончилось. Таким образом делегат управляет, должен ли остаток от исходного сообщения быть обработан. Если putData возвращает SIZE [], то сообщение также заканчивается, но за исключением, выданным вызывающей стороне RequestMessage.send отправка.
Если потребитель для части был задан как указатель на функцию, а не экземпляр ContentConsumer, то функция вызвана только в первый раз, когда потребитель необходим, и впоследствии тот же потребительский экземпляр используется для любых соответствующих частей того же сообщения ответа. Для частей, обработанных указателем на функцию, соответствующий ResponseMessage в Response.Body.Data содержит только заголовок для части, потому что функция не имеет доступа к телу ResponseMessage.
Делегированный потребитель может получить доступ к этому потребителю и его свойствам через его свойство MyDelegator, хотя это редко необходимо.

FileConsumer | GenericConsumer | ImageConsumer | MultipartProvider | matlab.net.http. 'MediaType' | matlab.net.http. MessageBody | matlab.net.http. RequestMessage | matlab.net.http. ResponseMessage