ここは旧式の4DドキュメントWebサイトです。最新のアップデートされたドキュメントを読むには新サイトをご利用下さい→ developer.4d.com |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v19.8
HTTP Request
|
HTTP Request ( httpMethod ; url ; contents ; response {; headerNames ; headerValues}{; *} ) -> 戻り値 | ||||||||
引数 | 型 | 説明 | ||||||
httpMethod | テキスト |
![]() |
リクエストで使用するHTTPメソッド | |||||
url | テキスト |
![]() |
リクエストの送信先URL | |||||
contents | テキスト, BLOB, ピクチャー, オブジェクト |
![]() |
リクエストボディの内容 | |||||
response | テキスト, BLOB, ピクチャー, オブジェクト |
![]() |
レスポンスの内容 | |||||
headerNames | テキスト配列 |
![]() |
リクエストのヘッダー名 | |||||
![]() |
返されたヘッダー名 | |||||||
headerValues | テキスト配列 |
![]() |
リクエストのヘッダー値 | |||||
![]() |
返されたヘッダー値 | |||||||
* | 演算子 |
![]() |
指定時: 接続を保持する (keep-alive) 省略時: 自動で接続を閉じる |
|||||
戻り値 | 倍長整数 |
![]() |
HTTPステータスコード | |||||
HTTP Requestコマンドは指定したURLに任意のメソッドでHTTPリクエストを送信し、HTTPサーバーのレスポンスを処理することを可能にします。
httpMethod 引数にはHTTPリクエストのメソッドを渡します。HTTP Clientテーマの以下の定数を使用できます:
定数 | 型 | 値 | コメント |
HTTP DELETE method | 文字列 | DELETE | RFC 2616参照 |
HTTP GET method | 文字列 | GET | RFC 2616参照。HTTP Getを使用するのと同等。 |
HTTP HEAD method | 文字列 | HEAD | RFC 2616参照 |
HTTP OPTIONS method | 文字列 | OPTIONS | |
HTTP POST method | 文字列 | POST | RFC 2616参照 |
HTTP PUT method | 文字列 | PUT | RFC 2616参照 |
HTTP TRACE method | 文字列 | TRACE | RFC 2616参照 |
リクエストの送信先を url 引数に渡します。使用されるシンタックスは以下の通りです:
http://[{user}:[{password}]@]host[:{port}][/{path}][?{queryString}]
例えば以下の文字列を渡すことができます:
http://www.myserver.com
http://www.myserver.com/path
http://www.myserver.com/path?name=jones
https://www.myserver.com/login (*)
http://123.45.67.89:8083
http://john:smith@123.45.67.89:8083
http://[2001:0db8:0000:0000:0000:ff00:0042:8329]
http://[2001:0db8:0000:0000:0000:ff00:0042:8329]:8080/index.html (**)
(*) HTTPSリクエストを行う場合でも、証明書の発行局は検証されません。
(**) IPv6 アドレスをURLに使用する場合についての詳細は RFC 2732 を参照ください。
contents 引数にはリクエストのボディを渡します。この引数に渡されるデータはリクエストのHTTPメソッドにより異なります。
テキストやBLOB、ピクチャー、オブジェクトデータを送信できます。content-type が指定されない場合、以下のタイプが使用されます:
コマンド実行後、response 引数はサーバーから返された結果を受け取ります。この結果はレスポンスからヘッダーを取り除いたボディー部になります。
responseには異なる型のレスポンスを渡せます:
注: response 引数にテキスト変数が渡された場合、4Dはサーバーから返されたデータを解読しようとします。4Dはまずcontent-type ヘッダーから文字セットを取得しようとし、次にBOMの中身を使用し、最後はhttp-equiv charset (html コンテンツ内) あるいは encoding (xml用) 属性を探します。それでも文字セットが見つからない場合、4DはレスポンスをANSIで解読しようとします。変換が失敗した場合、返されるテキストは空になります。サーバーが文字セット情報あるいはBOMを返すかどうかが分からない一方エンコーディング情報を知っている場合には、BLOBにresponse変数を渡してConvert to textを呼び出す方が正確です。
オブジェクト型の変数を response 引数に渡したとき、リクエストが "application/json" (または "something/json" ) コンテンツ型と結果を返してきた場合、4D はオブジェクトを生成するためにJSON コンテンツを解析しようとします。
サーバーから返された結果がresponseの変数型に対応しない場合、変数は空のままです。
headerNames と headerValuesにはリクエストヘッダーの名前と値をそれぞれ格納した配列を渡します。
このコマンド実行後、これらの配列にはHTTPサーバーから返されたレスポンスのヘッダー情報で置き換えられます。これにより特にCookieを管理できます。
* 引数を使用してサーバー接続時にkeep-aliveメカニズムを有効にできます。デフォルトではこの引数が省略されると、keep-aliveは有効になりません。
コマンドからは標準のHTTPステータスコードが返されます (200=OK等)。HTTPステータスコードについてはRFC 2616を参照してください。
ネットワークに関連する理由 (DNS解決に失敗した、サーバーに接続できないなど...) により、サーバーに接続できない場合、コマンドは0を返し、エラーが生成されます。エラーは ON ERR CALL コマンドを使用してインストールされたエラー処理メソッドで処理できます。
リモートデータベースからレコード削除を要求する:
$body_t:="{record_id:25}"
$httpStatus_l:=HTTP Request(HTTP DELETE method;"database.example.com";$body_t)
注: サーバー側では受け付けたリクエストに応じて適切な処理を実装しなければなりません。HTTP Requestはリクエストの送信と返される結果を処理するだけです。
リモートデータベースにレコード追加を要求する:
$body_t:="{fName:'john',fName:'Doe'}"
$httpStatus_l:=HTTP Request(HTTP PUT method;"database.example.com";$body_t)
注: サーバー側では受け付けたリクエストに応じて適切な処理を実装しなければなりません。HTTP Requestはリクエストの送信と返される結果を処理するだけです。
リモートデータベースにJSON形式のレコードを追加するリクエスト:
C_OBJECT($content)
OB SET($content;"lastname";"Doe";"firstname";"John")
$result:=HTTP Request(HTTP PUT method;"database.example.com";$content;$response)
プロダクト: 4D
テーマ: HTTPクライアント
番号:
1158
初出: 4D v13
変更: 4D v14
変更: 4D v16 R4
ランゲージリファレンス ( 4D v19)
ランゲージリファレンス ( 4D v19.1)
ランゲージリファレンス ( 4D v19.4)
ランゲージリファレンス ( 4D v19.5)
ランゲージリファレンス ( 4D v19.6)
ランゲージリファレンス ( 4D v19.7)
ランゲージリファレンス ( 4D v19.8)