Пакет: 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