Пакет: matlab.net.http.io
Суперклассы: matlab.net.http.io.ContentConsumer
Потребитель для нескольких типов контента в HTTP-сообщениях
Используйте этого потребителя для обработки потоковой передачи для нескольких типов контента, когда вы не можете заранее предсказать, какие типы возвращает сервер.
The matlab.net.http.io.GenericConsumer
класс является handle
класс.
consumer = GenericConsumer
создает GenericConsumer
использование потребителей по умолчанию.
consumer = GenericConsumer(
создает types
,consumer
)GenericConsumer
для обработки заданного types
использование соответствующей consumer
. Можно задать несколько пар аргументов в любом порядке как types1,consumer1,...,typesN,consumerN
. MATLAB® выполняет поиск по types
в порядке их появления и использования первого соответствия. Если среди заданных типов нет совпадений, MATLAB использует набор потребителей по умолчанию, в зависимости от типа.
consumer = GenericConsumer(
создает puthandle
)ContentConsumer
который вызывает функцию, заданную как puthandle
для каждого вызова на putData
этого потребителя способ.
types
- Типы содержимогоТипы содержимого, заданные как строковые массивы, вектор символов или массив ячеек векторов символов. types
задает типы содержимого с помощью синтаксиса "type/subtype"
.
Компоненты типа и подтипа в каждом элементе types
рассматриваются как регулярные выражения, совпадающие с типом/подтипом ContentTypeField
в ответе, с сложением, что lone '*' для типа или подтипа соответствует любому типу или подтипу, и все поиски привязываются как на начале, так и на конце строки. Для примера,
Тип/подтип | Матчи |
---|---|
text/* | Тип 'text' и любой подтип |
*/.*json.* | Любой тип с подтипом, который содержит 'json' |
*/.*json | Любой тип с подтипом, который заканчивается на 'json' |
*/* | Любой тип или подтип |
Если подтип '*'
можно опустить конечный '/*'
. text
то же, что и 'text/*'
.
types
просматриваются в порядке их появления, и используется первое соответствие. Если среди заданных типов нет совпадений, используется набор потребителей по умолчанию, в зависимости от типа, в таком порядке:
Тип/подтип | Потребитель по умолчанию |
---|---|
multipart/* | MultipartConsumer |
image/* | ImageConsumer |
.*/.*json.* | JSONConsumer |
*/* | StringConsumer |
*/* | BinaryConsumer |
В то время как оба StringConsumer
и BinaryConsumer
используются для любого типа, StringConsumer
принимает только типы, для которых он может определить набор графиков, заданный как text/*
, любой тип с атрибутом charset или один из типов, известных MATLAB, основан на символах, таких как "application/xml"
и "application/javascript"
. Если StringConsumer
отклоняет тип, затем BinaryConsumer
принимает тип и сохраняет невертированную полезную нагрузку в Response.Body.Data
как uint8
вектор.
Когда этот потребитель выбирает подходящего делегата на основе этих критериев поиска, он вызывает initialize
делегата метод, чтобы увидеть, принимает ли делегат полезную нагрузку. Если метод возвращается
false
чтобы указать, что делегат не принимает, этот потребитель продолжает поиск в списке, чтобы найти следующего соответствующего делегата.
consumer
- Потребитель содержимогоmatlab.net.http.io.ContentConsumer
| указатель на функциюПотребитель содержимого, заданный как matlab.net.http.io.ContentConsumer
объект, который может обрабатывать один из заданных типов или указатель на функцию, возвращающую ContentConsumer
который может обрабатывать эти типы.
puthandle
- функция putDataОбработайте функцию следующим ContentConsumer.putData
синтаксис:
[length,stop] = putData(data)
где data
a uint8
массив и length
- длина этого массива.
Используйте этот синтаксис, чтобы обработать все входы с сервера с помощью одной функции, когда вы знаете тип данных, которые возвращает сервер. Функция не имеет доступа к ResponseMessage
или любую информацию о данном потребителе.
AllocationLength
- Предлагаемый buffer sizeuint64
Предлагаемый buffer size, заданный как uint64
. MATLAB устанавливает AllocationLength
к ожидаемому размеру буферов данных, переданных в putData
. Фактический размер может быть меньше или больше. Чтобы улучшить эффективность, потребитель может использовать это значение для предварительного выделения пространства для обработки данных.
MATLAB устанавливает это свойство перед вызовом start
способ для удобства подклассов.
GetAccess | public |
SetAccess | public |
ContentLength
- Ожидаемая длина полезной нагрузкиuint64
| пустойОжидаемая длина полезной нагрузки, заданная как uint64
. Свойством обычно является Value
свойство matlab.net.http.field.ContentLengthField
в Header
свойство.
Если ContentLength
пуст, тогда длина не известна. Полезная нагрузка заканчивается, когда putData(uint8.empty)
вызывается.
MATLAB устанавливает это свойство перед вызовом initialize
для удобства подклассов, которым может быть полезно знать длину данных.
Если это ContentConsumer
является делегатом потребителя верхнего уровня, затем значение ContentLength
может отличаться от ContentLength
значение потребителя верхнего уровня.
Пример: numel(someData)
где someData
тип uint8
GetAccess | public |
SetAccess | public |
ContentType
- Тип носителя полезной нагрузкиmatlab.net.http.MediaType
| пустойТип мультимедиа полезной нагрузки, заданный как matlab.net.http.MediaType
объект. Свойством обычно является Value
свойство matlab.net.http.field.ContentTypeField
в Header
свойство. Если на ContentType
свойство пустое, тогда ContentTypeField
пуст или отсутствует.
MATLAB устанавливает это свойство перед вызовом initialize
для удобства подклассов, которые могут захотеть изучить MediaType
. Подклассы могут задать это свойство, если они определяют из данных, что это другое MediaType
.
В конце переноса MATLAB копирует это значение в Response.Body.ContentType
свойство.
Пример: 'application/octet-stream'
GetAccess | public |
SetAccess | public |
Header
- Заголовок обрабатываемой полезной нагрузкиmatlab.net.http.HeaderField
Заголовок обрабатываемой полезной нагрузки, заданный как matlab.net.http.HeaderField
объект.
Потребители используют этот заголовок, чтобы определить, как обработать полезную нагрузку, которая отправляется им. Для потребителя верхнего уровня это значение совпадает с Response.Header
. Для делегата значение может быть другим. Для примера в многочастном сообщении, обработанном MultipartConsumer
, это заголовок части, которую обрабатывает этот делегат. Делегат все еще может изучить Response.Header
для заголовков исходного сообщения.
MATLAB устанавливает это свойство перед вызовом initialize
, для удобства подклассов.
GetAccess | public |
SetAccess | public |
Request
- Завершено RequestMessage
который был отправленmatlab.net.http.RequestMessage
Завершенное RequestMessage
который был отправлен, заданный как matlab.net.http.RequestMessage
объект. Это окончательная RequestMessage
после всех перенаправлений, который является completedrequest
возвращаемое значение из send
способ.
MATLAB устанавливает это свойство перед вызовом initialize
, для удобства подклассов.
GetAccess | public |
SetAccess | public |
Response
— ResponseMessage
обрабатываетсяmatlab.net.http.ResponseMessage
The ResponseMessage
обрабатывается, задается как matlab.net.http.ResponseMessage
объект.
MATLAB устанавливает Response
свойство перед вызовом initialize
. Значение является ResponseMessage
после получения заголовков, но до получения полезной нагрузки. В начале обработки ответного сообщения (или в начале компонента для многопоточных сообщений) ResponseMesssage.Body
свойство является MessageBody
объект с пустыми Data
и Payload
свойства. Чтобы хранить полученные данные, потребители могут редактировать Response
и MessageBody.Data
свойства во время передачи данных. Обычно потребители, которые обрабатывают и затем хранят данные Response.Body.Data
к их обработанной полезной нагрузке, хотя это не требуется. По завершении передачи MATLAB возвращает это Response
к вызывающему абоненту send
. Потребители не должны изменять другие Response
свойства, такие как Header
или StatusLine
, поскольку эти изменения возвращаются вызывающему абоненту send
.
The Response.Body.Payload
свойство пусто во время передачи, и потребители не должны пытаться изменить его. Если на HTTPOptions.SavePayload
задается свойство, затем устанавливается MATLAB Payload
к полученной полезной нагрузке в конце передачи сообщения или части (после вызова на putData(uint8.empty)
) или когда происходит исключение.
Если во время обработки сообщений у потребителя возникает исключение, MATLAB выдает HTTPException
объект. The History
свойство содержит это Response
значение.
Если потребитель является делегатом, который обрабатывает часть многочастного сообщения, то Response.Header
содержит заголовок всего сообщения и Payload
и Data
свойства Response.Body
удаляются перед вызовом ContentConsumer
для каждой части. По завершении каждой части, новый ResponseMessage
добавляется в конец массива ResponseMessage
объекты в Body.Data
исходного отклика содержащий
Header
от этого объекта и Body
от этого свойства. Следующий делегат видит свежую Response
с пустым MessageBody
, не предыдущий делегат MessageBody
.
GetAccess | public |
SetAccess | public |
Dependent | true |
URI
- Пункт назначения обрабатываемого запросаmatlab.net.URI
Адрес назначения обрабатываемого запроса, заданный как matlab.net.URI
объект. Это значение является исходным URI назначения, определяемым send
. Это не URI прокси или конечный URI после перенаправлений.
MATLAB устанавливает это свойство перед вызовом initialize
, для удобства подклассов.
GetAccess | public |
SetAccess | public |
PutMethod
— putData
метод[]
putData
метод делегата, заданный как указатель на функцию или заданный как []
если CurrentDelegate
задан.
Это свойство задано как delegateTo
. Подклассы должны вызывать эту функцию в своих putData
метод для отправки данных делегату или завершения фрагмента данных делегата путем отправки uint8.empty
:
[len, stop] = obj.PutMethod(data);
В конце сообщения после вышеуказанного вызова любого делегата для завершения сообщения должны быть установлены подклассы PutMethod
чтобы опустошить и вызвать вызов putData(uint8.empty)
в суперклассе, чтобы этот класс знал, что сообщение закончилось. Этот putData
вызов уйдет PutMethod
пустой или установите его назад в puthandle
аргумент передан конструктору.
GetAccess | protected |
SetAccess | protected |
Dependent | true |
AppendFcn
- Функция вызывается putData
для добавления дополнительных данныхФункция, заданная как указатель на функцию, вызывается putData
метод для добавления дополнительных данных. The putData
метод в этом классе вызывает AppendFcn
функция для добавления данных, которые она получает в своей data
аргумент существующим данным в ответном сообщении. Функция должна иметь подпись:
AppendFcn(consumer,newdata)
где newdata
- данные, которые будут добавлены в массив в consumer.Response.Body.Data
. В обязанности этого метода входит обновление consumer.CurrentLength
для отражения новой длины Data
. Если newdata
пуст, что указывает на конец потока, тогда функция должна обновляться Response.Body.Data
до его конечного значения.
Поведение по умолчанию, если это свойство пусто, использует внутреннюю функцию, которая обрабатывает Data
как массив произвольных значений, поддерживающих horzcat
функция. Он эффективно добавляет newdata
путем предварительного выделения пространства, поддержания CurrentLength
является фактической длиной хранимых данных. В конце сообщения он обрезает Response.Body.Data
на CurrentLength
.
Подклассы могут изменить это свойство, если horzcat
не подходит для процесса добавления. Для примера, когда StringConsumer
создает скалярную строку, она добавляет к строке с помощью plus
функция вместо horzcat
.
Подклассы, которые не вызывают ContentConsumer.putData
для добавления данных, или которые удовлетворены horzcat
поведение при добавлении данных может игнорировать это свойство.
Пример: @customAppend
где @customAppend
определяется потребителем
GetAccess | protected |
SetAccess | protected |
CurrentDelegate
— ContentConsumer
которому этот потребитель делегируетmatlab.net.http.io.ContentConsumer
| []
The ContentConsumer
которому делегирует этот потребитель, задается как matlab.net.http.io.ContentConsumer
объект. The delegateTo
метод вызывающего потребителя (делегатор) устанавливает CurrentDelegate
свойство. Если текущего делегирования нет, то значение []
.
MATLAB устанавливает CurrentDelegate
на []
перед вызовом initialize
.
GetAccess | protected |
SetAccess | protected |
CurrentLength
- Объем данных, имеющихся в настоящее время в Response.Body.Data
uint64.empty
(по умолчанию) | uint64
Длина данных в данный момент в Response.Body.Data
свойство, заданное как uint64
.
Это свойство используется при Response.Body.Data
предварительно выделен размер, больший фактического объема хранимых в настоящее время данных, для указания длины этих хранимых данных. Если это свойство пусто, это означает, что все Response.Body.Data
содержит сохраненные данные или ContentConsumer
подкласс утилизирует данные каким-либо образом, кроме хранения их в Response.Body.Data
.
Это свойство используется и устанавливается putData
метод в этом базовом классе, когда AppendFcn
свойство пустое. Именно в интересах подклассов вызываются putData
и хотите изучить уже сохраненные данные и/или любые реализации AppendFcn
которые поддерживают результаты в Response.Body.Data
.
Подклассы, которые используют putData
также может изменить это свойство, чтобы сбросить положение в буфере, где хранятся данные. Для примера, когда значение по умолчанию AppendFcn
используется функция, подкласс, который обрабатывает все Response.Body.Data
при каждом вызове putData
возможно, больше не используется для исходных данных, поэтому он может сбросить CurrentLength
свойство, равное 1, так что следующая putData
вызов перезаписывает буфер новыми данными. Нет необходимости очищать элементы в буфере после окончания новых данных.
Подклассы, которые не вызывают putData
может использовать это свойство для отслеживания собственных данных или может оставить его незаполненным (пустым). MATLAB не накладывает никаких ограничений на значение, которое может быть установлено здесь, и не использует его ни в каких целях, кроме как определить, где значение по умолчанию AppendFcn
следует хранить следующий буфер данных и где обрезать данные в конце сообщения. Перед окончательным вызовом установите это свойство в пустое значение putData(uint8.empty)
для предотвращения усечения данных.
MATLAB устанавливает это свойство пустым перед каждым вызовом initialize
.
GetAccess | protected |
SetAccess | protected |
MyDelegator
— ContentConsumer
который делегировал этому потребителюmatlab.net.http.io.ContentConsumer
| пустойThe ContentConsumer
делегированный этому потребителю, указанный как matlab.net.http.io.ContentConsumer
объект. Если этот потребитель является делегатом, который был вызван другим потребителем, таким как GenericConsumer
или MultipartConsumer
, тогда это вызывающий потребитель. Он пуст для потребителя верхнего уровня, указанного в вызове send
.
Делегаты могут использовать это свойство для доступа к свойствам своих делегатов, например, чтобы определить, какой потребитель делегировал им.
GetAccess | protected |
SetAccess | protected |
initialize | Подготовьте потребителя к новой полезной нагрузке HTTP |
start | Запустите передачу данных в GenericConsumer |
putData | Сохраните следующий буфер данных для GenericConsumer |
delegateTo | Делегат другому потребителю |
ContentConsumer
| ContentTypeField
| FileProvider
| fopen
| RequestMessage
| ResponseMessage
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.