Пакет: matlab.net.http.io
Суперклассы: matlab.net.http.io.GenericConsumer
Помощник для многослойных типов контента в сообщениях HTTP
Этот потребитель процессы многослойные сообщения ответа HTTP. Многослойное сообщение является тем, поле заголовка Типа контента которого задает "multipart", и чье тело содержит одну или несколько частей. Каждая часть содержит свой собственный набор полей заголовка, описывающих часть, самым важным из которых является поле Content-Type.
matlab.net.http.io.MultipartConsumer классом является handle класс.
Если вы пишете свой собственный 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 свойство, хотя это редко необходимо.
consumer = MultipartConsumer( создает types,consumer)MultipartConsumer обрабатывать заданный types использование соответствующего consumer. Можно задать несколько пар аргумента в любом порядке как types1,consumer1,...,typesN,consumerN. MATLAB® ищет types в порядке они появляются, и использует первое соответствие. Если нет никаких соответствий среди заданных типов, MATLAB использует группу по умолчанию потребителей, в зависимости от типа.
FileConsumer | GenericConsumer | ImageConsumer | MediaType | MessageBody | MultipartProvider | RequestMessage | ResponseMessage