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

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

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

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

В этой таблице показано, как MATLAB преобразует Data к полезной нагрузке в сообщении запроса на основе свойств type/subtype и атрибута charset, которые вы задаете в поле заголовка Content-Type. Символ звездочки (*) означает любой подтип.

Тип содержимого

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

application/json

Data преобразован в Юникод® значение с использованием jsonencode функция. MATLAB затем использует unicode2native функция для преобразования значения в uint8, на основе атрибута charset в поле Content-Type.

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

Если атрибут charset не задан, то значение charset по умолчанию является 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 charset. Для наилучших результатов явным образом задайте UTF-8 если данные содержат символы, отличные от ASCII.

image/*

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

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

Например, следующий код преобразует imageData в JPEG с качеством сжатия 50 и отправляет данные в указанный url с набором Content-Type, равным "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.Document объект, MATLAB преобразует его, используя xmlwrite функция.

Если Data - строка или вектор символов, MATLAB преобразует его в uint8 использование заданного набора графиков. Если не указано, значение charset по умолчанию является 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

  • приложение/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 вектор без преобразования и игнорирования поля заголовка Content-Type, установите Payload свойство вместо Data.

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

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

  • text/*

  • любой тип с charset

  • 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 свойство true, которое является свойством по умолчанию. В таблице символ звездочки (*) означает любые символы.

Тип содержимого ответного сообщенияТип 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 и charset, если задано, или кодировка по умолчанию MATLAB.

application/*spreadsheet*

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

text/xml
application/xml

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

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

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

  • text/*

  • любой тип с charset

  • 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 payload и, если тип основан на символах, то 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'

См. также

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