Пакет: matlab.net.http.io
Суперклассы: matlab.net.http.io.ContentConsumer
Потребитель для нескольких типов контента в сообщениях HTTP
Используйте этого потребителя, чтобы обработать потоковую передачу для нескольких типов контента, когда вы не можете предсказать заранее, какие типы сервер возвращает.
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
в ответе, со сложением, что одинокое '*' для типа или подтипа совпадает с любым типом или подтипом и всеми поисковыми запросами, привязываются на обоих начало и конец строки. Например,
Ввести/Выделить подтипы | Соответствия |
---|---|
text/* | Введите 'text' и любой подтип |
*/.*json.* | Любой тип с подтипом, который содержит 'json' |
*/.*json | Любой тип с подтипом, который заканчивается 'json' |
*/* | Любой тип или подтип |
Если подтипом является '*'
, можно не использовать запаздывающий '/*'
Текст
совпадает с 'text/*'
.
types
ищутся в порядке, они появляются, и первое соответствие используется. Если нет никаких соответствий среди заданных типов, группа по умолчанию потребителей используется, в зависимости от типа в этом порядке:
Ввести/Выделить подтипы | Потребитель по умолчанию |
---|---|
multipart/* | MultipartConsumer |
image/* | ImageConsumer |
.*/.*json.* | JSONConsumer |
*/* | StringConsumer |
*/* | BinaryConsumer |
В то время как оба StringConsumer
и BinaryConsumer
используются в любом типе, StringConsumer
только принимает типы, для которых это может определить набор символов в виде text/*
, любой тип с атрибутом набора символов или один из типов, которые знает 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
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
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
.
Response.Body.Payload
свойство пусто во время передачи, и потребители не должны пытаться изменить его. Если HTTPOptions.SavePayload
свойство установлено, затем MATLAB устанавливает Payload
к полученной полезной нагрузке в конце передачи сообщения или части (после того, как вызов putData(uint8.empty)
) или когда исключение происходит.
Если исключение происходит в потребителе во время обработки сообщения, то MATLAB выдает HTTPException
объект. 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
метод, чтобы добавить дополнительные данные. 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
| []
ContentConsumer
к которому этот потребитель делегирует в виде matlab.net.http.io.ContentConsumer
объект. delegateTo
метод потребителя вызова (delegator) устанавливает 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
| пустойContentConsumer
это делегировало этому потребителю в виде matlab.net.http.io.ContentConsumer
объект. Если этот потребитель является делегатом, который был вызван другим потребителем, таким как GenericConsumer
или MultipartConsumer
, затем это - потребитель вызова. Это пусто в потребителе верхнего уровня, заданном в вызове send
.
Делегаты могут использовать это свойство получить доступ к свойствам их delegators, например, определить, который потребитель делегировал им.
GetAccess | protected |
SetAccess | protected |
initialize | Подготовьте потребителя к новой полезной нагрузке HTTP |
start | Запустите передачу данных к GenericConsumer |
putData | Сохраните следующий буфер данных для GenericConsumer |
delegateTo | Делегируйте другому потребителю |
ContentConsumer
| ContentTypeField
| FileProvider
| RequestMessage
| ResponseMessage
| fopen
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.