Пакет: matlab.net.http.io
Суперклассы: matlab.net.http.io.StringConsumer
Потребитель содержимого, который преобразует вход JSON в данные MATLAB
Этот ContentConsumer
получает сообщения, содержимое которых является JSON. Он преобразует данные JSON в MATLAB® и сохраняет результат в теле ответного сообщения.
Этот потребитель должен применяться только к входящему содержимому, который является JSON (для примера, ответных сообщений или частей многопоточных сообщений с типом контента "application/json"
), хотя он не проверяет входящий тип контента.
По умолчанию MATLAB автоматически преобразует сообщение с типом содержимого "application/json"
таким образом, вам не нужно указывать этого потребителя для этого типа или любого другого типа, который явно указывает на JSON. Для получения дополнительной информации смотрите входы для MessageBody.Data
. Укажите этого поставщика явным образом, если вы знаете, что входящие данные являются JSON, даже если тип контента может не указать это. Например, иногда файл, содержащий данные JSON, имеет имя с .txt
расширение. При загрузке такого файла сервер может задать тип контента "text/plain"
на основе этого расширения, хотя оно содержит данные JSON.
Если происходит преобразование данных в ошибку, Response.Body.Data
в HTTPException
выданное на ошибку содержит любой промежуточный результат процесса декодирования.
The matlab.net.http.io.JSONConsumer
класс является handle
класс.
consumer = JSONConsumer
создает потребителя, который преобразует строку JSON, полученную в ResponseMessage
в данные MATLAB с помощью jsondecode
.
Charset
- Набор символовНабор символов, используемый для преобразования данных, задается как строка. Это значение первоначально пустое. Если вы оставляете его пустым, это значение устанавливается при получении сообщения на основе заданного или набора графиков по умолчанию в поле Content-Type сообщения. Если вы хотите принудительно преобразовать с помощью другого набора графиков, то вы можете сделать это, задав набор графиков в StringConsumer
конструктор или прямая установка этого свойства. Подклассы могут задать это свойство в любое время, в том числе в середине сообщения. Если вы измените это значение после вызова putData
, затем новое значение используется в последующих вызовах, чтобы putData
. Существующее содержимое Response.Body.Data
не изменяется.
Когда начинается получение ответа, если это свойство первоначально было оставлено пустым, MATLAB устанавливает это свойство на выбранный набор графиков на основе Content-Type. Если вы повторно используете этого потребителя для другого сообщения, то можно выбрать новый charset. Если вы устанавливаете это свойство на непустое значение, MATLAB никогда не изменяет его.
GetAccess | public |
SetAccess | public |
Dependent | true |
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 |
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 |
convert | Преобразуйте данные в строку в StringConsumer |
initialize | Подготовьте JSONConsumer к новому HTTP-сообщению |
putData | Сохраните следующий буфер данных JSON для JSONConsumer |
start | Запустите передачу данных в StringConsumer |
ContentConsumer
| jsondecode
| JSONProvider
| MessageBody
| StringConsumer
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.