Пакет: 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 использует группу по умолчанию потребителей, в зависимости от типа.
ResponseMessage
| RequestMessage
| GenericConsumer
| FileConsumer
| ImageConsumer
| MediaType
| MessageBody
| MultipartProvider