send
クラス: matlab.net.http.RequestMessage
名前空間: matlab.net.http
HTTP 要求メッセージの送信と応答の受信
構文
説明
[
は response
,completedrequest
,history
] = send(request
,uri
)request
メッセージを uri
で指定された Web サービスに送信し、response
がある場合はこれを返します。request.Method
プロパティが指定されていない場合、send
メソッドはプロパティを 'GET'
に設定します。
既定では、send
はメッセージのヘッダーと他の部分のセマンティクスの正確性を検証し、uri
を完了します。また、メソッドは正しい形式の要求になるように必要なヘッダー フィールドを埋めます。request.Body
が MessageBody
であり、その Payload
プロパティがまだ設定されていない場合、MessageBody.Data
の説明と同じように、send
は適切な変換関数を呼び出して任意の request.Body.Data
を送信対象の HTTP ペイロードを表すバイト ベクトルに変換します。通常、'GET'
要求にデータは含まれませんが、RequestMethod
に関係なくメソッドは Body
を送信します。サーバーがその応答でデータを返し、consumer
が指定されない場合、send
はそのデータを MATLAB® データに変換し、response.Body.Data
に保存します。データ変換の詳細については、MessageBody.Data
を参照してください。
request.Body
が ContentProvider
の場合、MATLAB は送信対象のデータを取得するためにプロバイダーを呼び出します。
ヘッダーにメソッドが通常追加するフィールドが既に含まれている場合、send
はフィールドに期待値があることを検証します。既定の動作を以下のようにオーバーライドできます。
何も確認せずにそのまま、またはヘッダーを変更してメッセージを送信するには、
request.Completed
送信前にプロパティをtrue
に設定します。complete
メソッドを使用して要求を完了した場合は、complete
に指定したuri
とoptions
と同じ値を指定しなければなりません。そうしないと、予測できない結果が生じる可能性があります。Completed
が設定されている場合でも、RequestLine
内の未指定のフィールドは既定値で埋められます。send
メソッドでヘッダーをチェックして変更できるようにしても、send
またはContentProvider
によって追加される可能性がある特定のヘッダー フィールドの追加を抑制するには、そのフィールドを空の値 ([]
) とともにrequest.Header
に追加します。たとえば、send
によって User-Agent ヘッダー フィールドが自動的に追加されます。この動作を希望しない場合は、ヘッダーにHeaderField('User-Agent')
を追加してください。空の値をもつヘッダー フィールドはメッセージに含まれません。Host フィールドと Connection フィールドを抑制することはできません。与えられたヘッダー フィールドに
send
メソッドが追加する値をオーバーライドするには、メッセージを送信または完了する前に、そのフィールドのユーザー独自のインスタンスを追加します。ただし、ContentProvider
によって追加される可能性があるヘッダー フィールドはこれによってオーバーライドされません。しかし、ヘッダー フィールドのタイプによっては、値が有効でない場合にsend
でメッセージが拒否される可能性もあります。特定のフィールド値のチェックを妨げたり、ContentProvider
によって追加されるフィールドをオーバーライドするには、目的の名前と値をもつヘッダーにmatlab.http.field.GenericField
のフィールド タイプを追加します。send
またはContentProvider
のどちらも、GenericField
ヘッダーと同じ名前をもつどのヘッダー フィールドも追加しません。また、その正確性もチェックしません。変換せずに生のバイナリ データを送信するために、
uint8
ベクトルをBody.Data
またはBody.Payload
のいずれかに挿入できます。唯一の違いは、Body.Data
内のデータがメッセージ内の Content-Type フィールドを基準に変換される一方、Body.Payload
はそうではない点です。Body.Payload
が空の場合、Completed
が既に設定されていても、send
は常に空でないBody.Data
を変換しようとします。変換ルールの詳細については、MessageBody.Data
を参照してください。
入力引数
出力引数
例
エラー処理
要求が受け入れられたかどうかを判別するために、常に response
Status
プロパティをチェックします。エラー条件は、次のとおりです。
MException
— メッセージが適切な形式ではなく、完了できない。HTTPException
— メッセージは完了したが、Web サービスが到達不能、またはoptions
で指定されたタイムアウト期間内に応答しない。response
のStatus
プロパティ — Web サービスが応答して HTTP エラー ステータスを返す。send
は正常に戻り、Status
プロパティをサーバーから返されたエラーに設定する。
バージョン履歴
R2016b で導入