Пакет: matlab.net.http.io
Суперклассы: handle
, matlab.mixin.Heterogeneous
Потребитель полезных данных сообщений HTTP
ContentConsumer является объектом, который преобразует или обрабатывает данные, полученные в HTTP- ResponseMessage
объект. MATLAB® повторно вызывает потребителя во время приема ответного сообщения, чтобы обработать буферы полезной нагрузки во время ее приема. Вы можете действовать или отображать эти потоковые данные во время их получения. Вы также можете прервать передачу перед получением всего сообщения. Использование потребителя может улучшить latency (задержку между приемом команды и началом передачи данных), когда время обработки данных сопоставимо со скоростью сети. Это также позволяет получать неограниченные потоковые ответные сообщения.
ContentConsumer
- абстрактный класс. Для обработки входящих данных, полученных в ответном сообщении HTTP, используйте одно из ContentConsumer
подклассы:
Можно также записать собственный подкласс ContentConsumer
класс или расширение одного из подклассов.
The matlab.net.http.io.ContentConsumer
класс является handle
класс.
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 |
AllocationLength
- Предлагаемый buffer sizeuint64
Предлагаемый buffer size, заданный как uint64
. MATLAB устанавливает AllocationLength
к ожидаемому размеру буферов данных, переданных в putData
. Фактический размер может быть меньше или больше. Чтобы улучшить эффективность, потребитель может использовать это значение для предварительного выделения пространства для обработки данных.
MATLAB устанавливает это свойство перед вызовом start
способ для удобства подклассов.
GetAccess | public |
SetAccess | public |
URI
- Пункт назначения обрабатываемого запросаmatlab.net.URI
Адрес назначения обрабатываемого запроса, заданный как matlab.net.URI
объект. Это значение является исходным URI назначения, определяемым send
. Это не URI прокси или конечный URI после перенаправлений.
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 |
Header
- Заголовок обрабатываемой полезной нагрузкиmatlab.net.http.HeaderField
Заголовок обрабатываемой полезной нагрузки, заданный как matlab.net.http.HeaderField
объект.
Потребители используют этот заголовок, чтобы определить, как обработать полезную нагрузку, которая отправляется им. Для потребителя верхнего уровня это значение совпадает с Response.Header
. Для делегата значение может быть другим. Для примера в многочастном сообщении, обработанном MultipartConsumer
, это заголовок части, которую обрабатывает этот делегат. Делегат все еще может изучить Response.Header
для заголовков исходного сообщения.
MATLAB устанавливает это свойство перед вызовом initialize
, для удобства подклассов.
GetAccess | public |
SetAccess | public |
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 |
CurrentDelegate
— ContentConsumer
которому этот потребитель делегируетmatlab.net.http.io.ContentConsumer
| []
The ContentConsumer
которому делегирует этот потребитель, задается как matlab.net.http.io.ContentConsumer
объект. The delegateTo
метод вызывающего потребителя (делегатор) устанавливает CurrentDelegate
свойство. Если текущего делегирования нет, то значение []
.
MATLAB устанавливает CurrentDelegate
на []
перед вызовом 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 |
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 |
initialize | Подготовьте потребителя к новой полезной нагрузке HTTP |
start | Запустите передачу данных в ContentConsumer |
putData | Обработка или сохранение следующего буфера данных для ContentConsumer |
delegateTo | Делегат другому потребителю |
Когда вы задаете ContentConsumer
в вызове RequestMessage.send
, потребитель является top-level потребителем. MATLAB передает всю полезную нагрузку в процессе приема, буфер за раз. Для примера:
req = RequestMesage; resp = req.send(url, [], MyConsumer);
Потребитель, вызываемый другим потребителем для обработки всех или части данных в сообщении, является delegate.
В следующем коде mp
является потребителем верхнего уровня, который получает всю полезную нагрузку сообщения с несколькими частями.
mp = MultipartConsumer('image/*', ImageConsumer, 'text/*', StringConsumer); resp = req.send(url, [], mp);
ImageConsumer
и StringConsumer
объекты являются потребителями делегирования, которые получают только те части полезной нагрузки, которые являются изображениями или текстом. A GenericConsumer
также использует делегатов. A ContentConsumer
обычно не важно, является ли это потребителем верхнего уровня или делегатом. Любой потребитель в matlab.net.http.io
пакет может работать как делегат.
BinaryConsumer
| ContentLengthField
| ContentProvider
| ContentTypeField
| FileConsumer
| GenericConsumer
| HeaderField
| ImageConsumer
| JSONConsumer
| matlab.net.URI
| MediaType
| MultipartConsumer
| RequestMessage
| ResponseMessage
| StringConsumer
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.