Преобразование типа данных HTTP

Интерфейс MATLAB® HTTP автоматически преобразует типы данных, используемые в сообщениях HTTP к и от типов MATLAB.

Преобразование данных в сообщениях запроса

При отправке сообщения с полезной нагрузкой присвойте данные MATLAB Data свойство в MessageBody объект, затем отправьте его как Body свойство в RequestMessage объект. Тип ваших данных MATLAB зависит от Типа контента HTTP сообщения. Если вы не задаете Тип контента, то MATLAB принимает значения Типа контента, как описано в Типе контента, Не Заданном.

Эта таблица показывает, как MATLAB преобразует Data к полезной нагрузке в сообщении запроса на основе свойств типа/подтипа и атрибута набора символов, что вы задаете в поле заголовка Типа контента. Символ звездочки (*) средние значения любой подтип.

ContentType

Тип MATLAB в MessageBody.Data Свойство

application/json

Data преобразованный в значение Unicode® с помощью jsonencode функция. MATLAB затем использует unicode2native функционируйте, чтобы преобразовать значение в uint8, на основе набора символов приписывают в поле заголовка Типа контента.

Если вы уже JSON-закодировали текст, то присваиваете текст Payload свойство вместо Data свойство. MATLAB преобразует значение в uint8 использование атрибута набора символов.

Если атрибут набора символов не задан, то значением набора символов по умолчанию является UTF-8.

text/* для любого подтипа кроме csv или xml

Если Data символьный массив или массив строк или массив ячеек из символьных векторов, MATLAB изменяет и конкатенирует текст строкой, чтобы сформировать вектор.

Если Data любой другой тип, MATLAB преобразует Data использование string функция. Получившая строка преобразована в uint8 на основе набора символов.

Если вы не задавали набор символов, значение по умолчанию зависит от подтипа. Для следующих подтипов значением по умолчанию является UTF-8:

  • json

  • jtml

  • javascript

  • css

  • calendar

Для всех других подтипов MATLAB определяет набор символов. Если все символы находятся в области значений ASCII, то набором символов является US-ASCII. В противном случае набором символов является UTF-8.

Примечание

Серверы не могут правильно интерпретировать типы текстов, закодированные как UTF-8 без явного UTF-8 набор символов. Для лучших результатов явным образом задайте UTF-8 если ваши данные содержат символы non-ASCII.

image/*

Data должны быть данные изображения в форме, приемлемой для imwrite функция. Преобразование Data к uint8 зависит от подтипа. Для получения информации о поддерживаемых типах и для управления преобразованием, смотрите Поддерживаемые Подтипы Данных изображения.

Чтобы управлять преобразованием ваших данных изображения или заменить тип преобразования на основе подтипа, задайте дополнительные аргументы к imwrite использование массива ячеек. Если вы задаете аргумент формата изображения (fmt), затем это заменяет преобразование по умолчанию.

Например, следующий код преобразует imageData к JPEG с качеством сжатия 50 и отправляет данные в заданный url с набором Типа контента к "image/jpeg".

body = MessageBody({imageData,'jpg','Quality',50});
req = RequestMessage('put',ContentTypeField('image/jpeg'),body);
resp = req.send(url);
  • application/xml

  • text/xml

Если Data XML DOM в форме Java® org.w3c.dom. Объект документа, MATLAB преобразует его с помощью xmlwrite функция.

Если Data строка или вектор символов, MATLAB преобразует его в uint8 использование заданного набора символов. Если не заданный, значением набора символов по умолчанию является UTF-8.

application/x-www-form-urlencoded

Если Data вектор matlab.net.QueryParameter объекты, затем MATLAB преобразует его в закодированную URL строку. Если это - строка или вектор символов, это оставлено без изменений.

audio/*

Data должны быть аудиоданные в форме, приемлемой для audiowrite функция. Создайте массив ячеек, содержащий матрицу m на n аудиоданных и уровня выборки в Гц. Можно задать дополнительные аргументы к audiowrite путем добавления аргументов пары "имя-значение" массиву ячеек.

MATLAB поддерживает следующие аудио типы:

  • audio/x-wav

  • audio/wav

  • audio/mp4

  • audio/vnd.wav

  • application/ogg

  • audio/flac

  • application/csv

  • text/csv

  • application/vnd.openxmlformats-
    officedocument.spreadsheetml.sheet

  • application/vnd.ms-excel

Data должна быть таблица в форме, подходящей для writetable функция.

Для csv подтипы, MATLAB преобразует Data к разделенному тексту запятой с помощью заданного набора символов. Набором символов по умолчанию является US-ASCII.

Для других типов MATLAB преобразует Data к данным об электронной таблице Excel®.

Задавать дополнительные аргументы пары "имя-значение" writetable, создайте массив ячеек, содержащий Data и дополнительные аргументы. Если вы задаете 'FileType' аргумент, тот тип должен быть сопоставим с подтипом, который вы задаете.

Тип контента, не заданный

Если вы не задаете поле Content-Type в сообщении запроса, MATLAB присваивает тип, подтип и набор символов на основе типа Data свойство. Это принятое поведение не может привести к Типу контента, который вы предназначили или можете не определить тип, таким образом, для лучших результатов, задайте Тип контента. Следующая таблица описывает принятый Тип контента на основе Data. Типы, не перечисленные, могут быть обработаны, но поведение для не включенных в список типов, как гарантируют, не останется то же самое в будущих релизах.

MessageBody.Data Тип свойства
Тип контента, не заданный

Получившийся тип контента

строка
массив символов
массив ячеек из символьных векторов

text/plain

таблица

text/csv

вектор ячейки, первый элемент которого является таблицей

text/csv — Если FileType csv, затем существует имя, пара значения в векторе со значением 'FileType','csv' или нет такой пары.

application/vnd.openxmlformats-officedocument.spreadsheetml.sheet — Если FileType spreadsheet.

org.w3c.dom.Documentapplication/xml
uint8 вектор

Отправить uint8 вектор без преобразования и игнорирования поля заголовка Типа контента, набор Payload свойство вместо Data.

Чтобы отправить символьно-ориентированные данные без преобразования, используйте unicode2native функция. Эта функция использует атрибут набора символов, чтобы преобразовать Data к uint8 вектор.

Если тип не является одним из перечисленных в таблице, то MATLAB определяет, является ли это одним из следующих символьно-ориентированных типов:

  • text/*

  • любой тип с набором символов

  • application/*javascript

  • application/vnd.wolfram.mathematica.package

MATLAB преобразует эти типы в строку, с помощью набора символов, если задано, или US-ASCII для text/plain, UTF-8 для типов приложения и кодирование MATLAB по умолчанию для других типов.

Преобразование данных в ответ обменивается сообщениями

При получении сообщения с полезной нагрузкой MATLAB преобразует входящий поток байтов (MessageBody.Data свойство) к соответствующему типу MATLAB.

Следующая таблица является списком Типов контента, которые MATLAB распознает в сообщении ответа, основывал свойства типа/подтипа и атрибут набора символов в полученном поле Content-Type. MATLAB преобразует данные только если HTTPOptions.ConvertResponse свойство верно, который является значением по умолчанию. В таблице, символ звездочки (*) средние значения любые символы.

Тип контента сообщения ответаТип MATLAB в MessageBody.Data Свойство
application/json

Data преобразован в строку на основе набора символов и затем к данным MATLAB с помощью jsondecode функция.

image/*

Data преобразован в изображение с помощью imread функция с заданным подтипом как формат, с помощью параметров по умолчанию. Если imread возвращает больше чем одно значение, затем Data массив ячеек.

Для поддерживаемых типов данных изображения смотрите Поддерживаемые Подтипы Данных изображения. Если подтип не находится в этом списке, то подтип передается imwrite как формат, который может или не может поддерживаться.

audio/*

Data преобразован с помощью audioread функционируйте к массиву ячеек двух значений, матрице m на n аудиоданных и уровня выборки в Гц. Подтип определяет формат, используемый audioread. Поддерживаемые типы:

  • audio/wav

  • audio/x-wav

  • audio/vnd.wav

  • audio/mp4

  • audio/flac

application/ogg не преобразован, потому что ogg данные не обязательно содержат аудио только.

text/csv
text/"запятая разделила значения"
application/csv
application/"запятая разделила значения"

Data преобразован в таблицу с помощью readtable, с принятым 'FileType' из csv и набор символов, если задано, или кодировка по умолчанию MATLAB.

application/*spreadsheet*

Data преобразован в таблицу с помощью readtable, с 'FileType' принятый, чтобы быть 'spreadsheet'.

text/xml
application/xml

Если Java доступен, Data преобразован в Java org.w3c.dom. Документ с помощью xmlread функция.

Если Java не доступен, Data обрабатывается как text/plain с UTF-8 набор символов.

Если тип не является одним из перечисленных в таблице, то MATLAB определяет, является ли это одним из следующих символьно-ориентированных типов:

  • text/*

  • любой тип с набором символов

  • application/*javascript

  • application/vnd.wolfram.mathematica.package

MATLAB преобразует эти типы в строку, с помощью набора символов, если задано, или US-ASCII для text/plain, UTF-8 для типов приложения и кодирование MATLAB по умолчанию для других типов.

Если MATLAB не поддерживает тип, или если HTTPOptions.ConvertResponse свойство установлено в falseзатем:

  • Если тип символьно-ориентирован, то Data содержит полезную нагрузку, преобразованную в строку.

  • В противном случае, Data содержит необработанный uint8 вектор.

Если преобразование входящих данных предпринято, но сбои (например, "image/jpeg" данные не являются допустимыми данными о JPEG), затем History свойство в HTTPException выданный RequestMessage.send метод содержит ResponseMessage с Payload набор свойств к uint8 полезная нагрузка и, если тип символьно-ориентирован, то Data установлен в полезную нагрузку, преобразованную в строку.

Поддерживаемые подтипы данных изображения

Следующие подтипы поддерживаются imwrite функционируйте как заданный формат. Например, аргумент формата для подтипа bmp 'bmp'. imread функция преобразует данные с заданным подтипом как формат.

Подтип

Формат, используемый
imwrite и imread

bmp

'bmp'

gif

'gif'

jpeg

'jpeg'

jp2

'jp2'

jpx

'jpx'

png

'png'

tiff

'tiff'

x-hdf

'hdf'

x-portable-bitmap

'pbm'

x-pcx

'pcx'

x-portable-graymap

'pgm'

x-portable-anymap

'pnm'

x-portable-pixmap

'ppm'

x-cmu-raster

'ras'

x-xwd

'xwd'

Смотрите также

| | | | | | | | | | | | |