exponenta event banner

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

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

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

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

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

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

Тип MATLAB в MessageBody.Data Собственность

application/json

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

Если текст в кодировке 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 если данные содержат символы, отличные от 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.Document, 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 без преобразования и игнорирования поля заголовка Content-Type установите значение Payload собственность вместо Data.

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

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

  • text/*

  • любой тип с кодировкой

  • application/*javascript

  • application/vnd.wolfram.mathematica.package

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

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

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

Следующая таблица представляет собой список типов содержимого, распознаваемых MATLAB в ответном сообщении, на основе свойств типа/подтипа и атрибута набора символов в поле принятого типа содержимого. 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 и набор символов, если он указан, или кодировка 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 набор символов.

Если тип не указан в таблице, 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'

См. также

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