Пакет: matlab.net.http.io
Суперклассы: matlab.net.http.io.GenericConsumer
Помощник для многопартийных типов содержимого в HTTP-сообщениях
Этот потребитель обрабатывает сообщения отклика HTTP с несколькими частями. Сообщение из нескольких частей является сообщением, поле заголовка Content-Type которого задает "multipart", и тело которого содержит одну или несколько частей. Каждая деталь содержит свой собственный набор полей заголовка, описывающих деталь, наиболее важным из которых является поле Content-Type.
The matlab.net.http.io.MultipartConsumer класс является handle класс.
Если вы пишете свои собственные ContentConsumer, это обычно работает, является ли это потребителем верхнего уровня (задается как 3-й аргумент RequestMessage.send method) или часть многочастного сообщения (если задано как «делегат» в 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 чтобы указать, что он не хочет обрабатывать деталь, полезная нагрузка детали обрабатывается с помощью поведения по умолчанию для Content-Type детали, как описано для 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