HTTP データ型の変換
MATLAB® の HTTP インターフェイスは、HTTP メッセージで使用されるデータ型と MATLAB 型の間で変換を自動的に行います。
要求メッセージでのデータの変換
ペイロードを伴うメッセージを送信する場合は、MATLAB データを MessageBody
オブジェクトの Data
プロパティに割り当ててから、RequestMessage
オブジェクトの Body
プロパティとして送信します。MATLAB データの型はメッセージの HTTP Content-Type によって異なります。Content-Type を指定しない場合、Content-Type の未指定で説明されているとおり、MATLAB によって Content-Type の諸値が仮定されます。
次の表は、Content-Type ヘッダー フィールドで指定する type/subtype プロパティと charset 属性に基づき、MATLAB が Data
を要求メッセージのペイロードに変換する方法を示しています。アスタリスク文字 (*
) は任意のサブタイプを表します。
Content-Type |
|
---|---|
application/json | 関数 JSON でエンコードされたテキストが既にある場合は、このテキストを charset 属性が指定されていない場合、既定の charset 値は |
|
charset が指定されていない場合、既定値はサブタイプによって異なります。以下のサブタイプでは、既定値は
それ以外のすべてのサブタイプについては、MATLAB が charset を決定します。すべての文字が ASCII の範囲にある場合、charset は メモ サーバーは、明示的な |
image/* |
イメージ データの変換を制御したり、サブタイプに基づく変換のタイプをオーバーライドするには、cell 配列を使用して たとえば、次のコードは圧縮品質 50 で body = MessageBody({imageData,'jpg','Quality',50}); req = RequestMessage('put',ContentTypeField('image/jpeg'),body); resp = req.send(url); |
|
|
|
|
audio/* |
MATLAB では次のオーディオの型をサポートしています。
|
|
他の型の場合、MATLAB は
|
Content-Type の未指定
要求メッセージで Content-Type フィールドが指定されない場合、MATLAB は Data
プロパティの型に基づいて、タイプ、サブタイプ、charset を割り当てます。この想定された動作では、目的の Content-Type が得られない場合や、タイプを決定できない場合があります。そのため、最良の結果が得られるように、Content-Type を指定してください。次の表は、Data
を基に想定される Content-Type を説明しています。このリストにない型を処理できる場合はありますが、リストにない型の動作が将来のリリースで同一に保たれる保証はありません。
| 結果の Content-Type |
---|---|
string | text/plain |
table | text/csv |
最初の要素がテーブルである cell ベクトル |
|
org.w3c.dom.Document | application/xml |
uint8 ベクトル | 変換せずに、Content-Type ヘッダー フィールドを無視して 変換せずに文字ベースのデータを送信するには、関数 |
型が表にリストされている型のいずれでもない場合、MATLAB はそれが以下の文字ベースの型の 1 つであるかどうかを判定します。
text/*
charset をもつ任意の型
application/*javascript
application/vnd.wolfram.mathematica.package
MATLAB はこれらの型を文字列に変換します。charset が指定されている場合はその charset が使用され、それ以外の場合は、text/plain
には US-ASCII
、アプリケーション タイプには UTF-8、他の型には既定の MATLAB エンコードが使用されます。
応答メッセージのデータの変換
ペイロードをもつメッセージを受信すると、MATLAB は着信バイト ストリーム (MessageBody.Data
プロパティ) を適切な MATLAB 型に変換します。
次の表は、受信した Content-Type フィールドの type/subtype プロパティと charset 属性に基づいて、応答メッセージで MATLAB が認識する Content-Type のリストです。MATLAB は HTTPOptions.ConvertResponse
プロパティが true (既定値) の場合にのみデータを変換します。この表で、アスタリスク文字 (*
) は任意の文字を表します。
応答メッセージの Content-Type | MessageBody.Data プロパティの MATLAB 型 |
---|---|
application/json |
|
image/* |
サポートされているイメージ データの型については、サポートされているイメージ データのサブタイプを参照してください。サブタイプがこのリストにない場合、そのサブタイプは |
audio/* |
ogg データにはオーディオだけが格納されているとは限らないため、 |
|
|
application/*spreadsheet* |
|
text/xml application/xml | Java が使用可能な場合、 Java が使用可能でない場合、 |
型が表にリストされている型のいずれでもない場合、MATLAB はそれが以下の文字ベースの型の 1 つであるかどうかを判定します。
text/*
charset をもつ任意の型
application/*javascript
application/vnd.wolfram.mathematica.package
MATLAB はこれらの型を文字列に変換します。charset が指定されている場合はその charset が使用され、それ以外の場合は、text/plain
には US-ASCII
、アプリケーション タイプには UTF-8、他の型には既定の MATLAB エンコードが使用されます。
MATLAB がその型をサポートしていない場合、あるいは HTTPOptions.ConvertResponse
プロパティが false
に設定されている場合は、以下のようになります。
その型が文字ベースの場合、
Data
には string に変換されたペイロードが含められます。それ以外の場合、
Data
には生のuint8
ベクトルが含められます。
着信データの変換を試行して失敗した場合 (たとえば、"image/jpeg"
データが有効な JPEG データでない場合)、RequestMessage.send
メソッドによりスローされた HTTPException
の History
プロパティには、uint8
ペイロードに設定された Payload
プロパティをもつ ResponseMessage
が格納されます。また、型が文字ベースのものである場合、Data
は string に変換されたペイロードに設定されます。
サポートされているイメージ データのサブタイプ
次のサブタイプは、関数 imwrite
により指定の形式としてサポートされています。たとえば、サブタイプ bmp
の形式引数は 'bmp'
です。関数 imread
は指定のサブタイプを形式として使用して、データを変換します。
サブタイプ |
|
---|---|
| 'bmp' |
| 'gif' |
| 'jpeg' |
| 'jp2' |
| 'jpx' |
| 'png' |
| 'tiff' |
| 'hdf' |
| 'pbm' |
| 'pcx' |
| 'pgm' |
| 'pnm' |
| 'ppm' |
| 'ras' |
| 'xwd' |
参考
MessageBody
| RequestMessage
| ResponseMessage
| ContentTypeField
| HTTPException
| HTTPOptions
| imwrite
| imread
| audiowrite
| audioread
| jsonencode
| jsondecode
| xmlwrite
| xmlread