matlab.net.http.io.JSONProvider クラス
名前空間: matlab.net.http.io
スーパークラス: matlab.net.http.io.StringProvider
MATLAB データを JSON 文字列として送信する ContentProvider
説明
JSONProvider
オブジェクトは、MATLAB® データを JSON 文字列に変換して RequestMessage
で送信する場合に使用します。変換には jsonencode
が使用されます。
RequestMessage
に Content-Type ヘッダー フィールドがない場合、このプロバイダーは "application/json"
を指定するフィールドを追加します。それ以外の場合は、JSON データと値が一致しなくても、ヘッダー フィールドは変更されずに変換が実行されます。
マルチパート メッセージ以外では、メッセージの Content-Type が "application/json"
であれば MessageBody.Data
の内容が自動的に JSON に変換されるため、このプロバイダーを明示的に指定することは通常はありません。詳細については、MessageBody.Data
を参照してください。他の Content-Type で JSON データを送信する場合や JSON データをマルチパート メッセージの一部として送信する場合は、このプロバイダーを明示的に指定します。
matlab.net.http.io.JSONProvider
クラスは handle
クラスです。
作成
説明
provider = JSONProvider(
は、data
)JSONData
プロパティを data
に設定して ContentProvider
を作成します。
プロパティ
パブリック プロパティ
JSONData
— 変換する MATLAB データ
MATLAB データ
変換する MATLAB データ。コンストラクターで指定された値 (指定されている場合) になります。
サブクラスを作成する際は、MATLAB で start
メソッドが呼び出される前の任意の時点でこの値を設定できます。この値を変更した場合、変更内容は次の start
の呼び出しから有効になります。
属性:
GetAccess | public |
SetAccess | public |
Dependent | true |
Header
— メッセージまたはパートのヘッダー フィールド
matlab.net.http.HeaderField.empty
(既定値) | matlab.net.http.HeaderField
メッセージまたはパートのヘッダー フィールド。1 つ以上の matlab.net.http.HeaderField
オブジェクトのベクトルとして指定されます。
このプロパティはサブクラスの作成にのみ使用されます。このプロパティは、プロバイダーの complete
を呼び出す前に MATLAB で設定されます。マルチパート メッセージ以外については、このプロパティは、MATLAB によって matlab.net.http.field.GenericFields
や値が空のフィールドを除いた Request.Header
の内容に初期化されます。ContentProvider
では、送信するデータを示すヘッダー フィールドを追加したり、メッセージの既存のヘッダー フィールドにパラメーターを追加したりする場合にこのプロパティを使用します。MultipartProvider
のデリゲートでは、このプロパティは、MATLAB によってデリゲート元のプロバイダーが挿入するパート用のヘッダー フィールドに初期化されます。これらのフィールドはデリゲートで変更が可能です。
マルチパート メッセージ以外では、プロバイダーの complete
メソッドから戻ると、MATLAB はこのプロパティを読み取って、その内容を Request
のヘッダーにマージします。この Header
に含まれるフィールドの Names
が Request.Header
にない場合、Request.Header
の末尾に追加されます。この Header
に含まれるフィールドの Name
が Request.Header
に含まれるフィールドと同じで、どちらの Values
も空でない場合は、次のように処理されます。
Request.Header
のフィールドがGenericField
の場合、Header
のフィールドは無視されます。Request.Header
のフィールドがGenericField
でない場合、Header
のフィールドに置き換えられます。
これらの一方または両方の Value
が空の場合は、Request.Header
からフィールドが削除され、メッセージの正常な終了時にも追加されません。
MultipartProvider
のデリゲートの場合は、この Header
の内容全体がパートのヘッダーとして使用されます。マルチパート デリゲートでは、Request.Header
にその Header
に付随する任意のフィールドが含まれていると想定してはなりません。プロバイダーがマルチパート デリゲートであるかどうかは MyDelegator
が MultipartProvider
かどうかを確認すれば特定できますが、このテストが必要になることはほとんどありません。
このプロパティが MATLAB で読み取られるのは、プロバイダーの complete
メソッドの呼び出しから戻るときだけです。MATLAB で start
が呼び出された後は、この配列に対する変更は無視されます。
クラスを作成するときは、スーパークラスで complete
を呼び出す前に、この (complete
メソッド内の) Header
にサブクラスがフィールドを追加済みの場合があることを認識しておく必要があります。それらのフィールドは残しておいて、同じ名前のフィールドを追加しないようにすることを推奨します。ただし、フィールドへのパラメーターの追加は可能です。たとえば、既存の Content-Type フィールドに charset パラメーターがない場合、スーパークラスで追加できます。
属性:
GetAccess | public |
SetAccess | public |
ForceChunked
— チャンク転送コーディングを強制するかどうかを示す
false
(既定値) | true
チャンク転送コーディングを強制するかどうかを示します。boolean として指定されます。これはサブクラスの作成にのみ関係するプロパティで、マルチパート デリゲート以外のプロバイダーにのみ該当します。サブクラスでは、ForceChunked
を設定することで、内容の送信にチャンク転送コーディングを使用するかどうかを制御します。false
(既定) の場合、MATLAB は、メッセージの送信準備ができた時点で内容の長さがわかっているかどうかに基づいて、内容をチャンク化して送信するかどうかを決定します。
MATLAB で内容の長さがわかっている場合 (メッセージに Content-Length フィールドがあるか、このプロバイダーの
expectedContentLength
メソッドから数値が返された場合)、チャンク化して送信するかどうかを MATLAB で決定します。MATLAB で内容の長さがわからない場合 (ヘッダーに Content-Length フィールドがないか、
expectedContentLength
の戻り値が空の場合)、MATLAB はメッセージを常にチャンク化して送信します。
ForceChunked
が true
の場合、内容の長さがわかっているかどうかに関係なく、既知の長さがチャンク サイズに満たない場合を除き、MATLAB はメッセージをチャンク化して送信します。このプロパティが true
の場合は、メッセージに Content-Length フィールドを含めてはなりません。HTTP ではチャンクされたメッセージに Content-Length フィールドを含めることが許可されないためです。ただし、想定されるデータの長さを返しているかを MATLAB で検証する場合は、expectedContentLength
メソッドで非ゼロの値を返すことができます。
MATLAB でメッセージをチャンク化して送信する場合、各チャンクのサイズは getData
で返されたデータの長さと等しくなります。
MATLAB は、complete
メソッドを呼び出してから start
を呼び出すまでの間にこの値を読み取ります。このフィールドの設定は行いません。
属性:
GetAccess | public |
SetAccess | public |
Request
— 送信する要求メッセージ
matlab.net.http.RequestMessage
送信する要求メッセージ。matlab.net.http.RequestMessage
オブジェクトとして指定されます。
このプロパティはサブクラスの作成にのみ使用されます。このプロパティは、このプロバイダーで他のメソッドを呼び出す前であり、かつヘッダー フィールドを追加したりメッセージを検証したりする前に、このプロバイダーが Body
に配置された RequestMessage
に RequestMessage.send
メソッドと RequestMessage.complete
メソッドで設定されます。プロバイダーは、このメッセージを調べて元の要求の内容を確認できます。
デリゲートの場合、このプロパティの値はデリゲーターと同じになります。ContentProviders
がデリゲートである場合は、必ずしも要求メッセージの本文全体を提供するわけではないため、この Request のヘッダー フィールドがそのプロバイダーで提供するデータに関連するものであるとは限らないことに注意が必要です。通常、デリゲートでは、この要求のデータ関連のヘッダー フィールド (Content-Type など) は無視します。
このメッセージへのヘッダー フィールドの追加や既存のヘッダー フィールドの変更をプロバイダーで行う場合は、complete
メソッドで Header
プロパティにそれらのフィールドを追加します。それらのフィールドに対する処理は、complete
の呼び出し元 (RequestMessage
またはデリゲート元のプロバイダー) で決定されます。RequestMessage.send
と RequestMessage.complete
は、それらのフィールドを RequestMessage
の Header
に常にコピーします。デリゲート元のプロバイダーでは、フィールドをそれぞれの Header
プロパティにコピーしたりメッセージに挿入したりできます (MultipartProvider
の場合と同様)。詳細については、Header プロパティを参照してください。
このプロパティは読み取り専用です。
属性:
GetAccess | public |
SetAccess | matlab.net.http.RequestMessage |
保護プロパティ
CurrentDelegate
— このプロバイダーのデリゲート先の ContentProvider
matlab.net.http.io.ContentProvider
| 空
このプロバイダーのデリゲート先の ContentProvider
。matlab.net.http.io.ContentProvider
オブジェクトとして指定されます。このプロパティは、現在のデリゲート先のプロバイダーを示すために呼び出し元のプロバイダー (デリゲーター) の delegateTo
メソッドで設定されます。現在のデリゲーションがない場合、値は空です。
このプロパティは complete
メソッドで空に設定されます。
属性:
GetAccess | protected |
SetAccess | protected |
MyDelegator
— このプロバイダーのデリゲート元の ContentProvider
matlab.net.http.io.ContentProvider.empty
(既定値) | matlab.net.http.io.ContentProvider
このプロバイダーのデリゲート元の ContentProvider
。matlab.net.http.io.ContentProvider
オブジェクトとして指定されます。
このプロパティは、ContentProvider
から別のプロバイダーにメッセージのすべてまたは一部のデータの送信がデリゲートされている場合に、デリゲート元のプロバイダーを示します。たとえば、MultipartProvider
はメッセージのパートを他のプロバイダーにデリゲートするため、各デリゲートに自身のハンドルを挿入します。それ以外の場合、MyDelegator
は空です。このプロパティは、デリゲートの delegateTo
メソッドで設定されます。
属性:
GetAccess | protected |
SetAccess | protected |
メソッド
パブリック メソッド
getData | StringProvider から HTTP 要求メッセージで送信するデータの次のバッファー |
特殊な演算子と関数
次のメソッドは、MATLAB の標準の演算子および関数と継承メソッドを、このクラスのオブジェクト用に特殊化したものです。
string | string としてのプロバイダー情報 |
show | プロバイダー情報を表示します |
保護されたメソッド
complete | JSONProvider の HTTP ヘッダーの完了 |
preferredBufferSize | ContentProvider の推奨されるバッファー サイズ |
expectedContentLength | ContentProvider の内容の長さ |
start | JSONProvider からデータ転送を開始 |
restartable | ImageProvider が再起動可能かどうか |
reusable | ImageProvider が再利用可能かどうか |
delegateTo | 別のプロバイダーにデリゲートする |
詳細
クラスの階層
バージョン履歴
R2018a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)