4th dimension 2004 webサービス入 門 - 日本kb.4d-japan.com/faq/140/web_services_2004.pdf4d...

51
4th Dimension 2004 Web サービス

Upload: others

Post on 31-Jan-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

4th Dimension 2004 Web サービス入 門

Page 2: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

2

目次 動作環境⑴ 4th Dimension 2004 4 動作環境⑵ 4th Dimension 2003 5 Web サービスの基礎 6 RPC/DOCモード 7 演習 1 - Webサービスクライアントの作成⑴ 8 演習 1 - Webサービスクライアントの作成⑵ 9 演習 1 - Webサービスクライアントの作成⑶ 10 演習 1 - Webサービスクライアントの作成⑷ 11 プロキシメソッド 12 演習 2 - ウィザードで自動生成される変数型 13 SET WEB SERVICE PARAMETER 14 4D Webサービスのエラー 15 演習 3 - クライアントのエラー処理⑴ 16 演習 3 - クライアントのエラー処理⑵ 17 演習 3 - クライアントのエラー処理⑶ 18 Web サービスの種類 19 演習 4 - Webサービスダイナミック/マニュアル⑴ 20 演習 4 - Webサービスダイナミック/マニュアル⑵ 21 環境設定⑴ 22 環境設定⑵ 23 環境設定⑶ 24 環境設定⑷ 25 環境設定⑸ 26 データベースパラメータ 27 演習 5 - Webサービスサーバの作成⑴ 28 演習 5 - Webサービスサーバの作成⑵ 29 演習 5 - Webサービスサーバの作成⑶ 30 演習 5 - Webサービスサーバの作成⑷ 31 SOAP DECLARATION 32

Page 3: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

3

目次 演習 6 - DOCモードでWebサービスを公開する 33 演習 7 - サーバのエラー処理 34 データベースメソッド 35 On Web Authentication 36 On Web Connection 37 演習 8 - ベーシック認証⑴ 38 演習 8 - ベーシック認証⑵ 39 HTTP接続 40 SOAP 41 SOAPメッセージの構造 42 HTTPリクエスト 43 HTTPレスポンス 44 要求メソッド 45 応答コード⑴ 46 応答コード⑵ 47 主要なHTTPヘッダ⑴ 48 主要なHTTPヘッダ⑵ 49 補足資料 1 - SET WEB SERVICE OPTION 50 補足資料 2 - SOAPメッセージの構造 51

Page 4: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

4

動作環境⑴ 4th Dimension 2004 ❶サーバアプリケーション

4D 2004 Windows 2000 SP4、Windows XP SP2、 Windows 2003 Server SP1/R2 Mac OS X 10.2.8※、10.3.9、10.4.6/Rosetta

Web Servicesライセンス

4th Dimension+4D Web Services 2004 4D Server+4D Web Services for 4D Server 2004 4D Server+4D Web Services for 4D Client 2004

Windows Pentium II 以上

800 x 600モニタ RAM 256MB以上(512MB以上推奨)

Macintosh

iMac以上 800 x 600モニタ RAM 256MB以上(512MB以上推奨)

※Mac OS X 10.2.8の場合、QuickTimeバージョン6.5.2 以上をインストールする。 ❷クライアントアプリケーション 4D(バージョン 2003.x 以降)、Java、Microsoft C#、VB、.NET、Office、Macromedia Flash、WebObjects、Perl、PHP ❸Web Services ライセンス Web Services ライセンスがない場合、デモモードで 1時間動作する。 Webサービスサーバとして 4Dを使用する場合、Web Services ライセンスが必要。 Webサービスクライアントとして4Dを使用する場合、Web Servicesライセンスは不要。 ❹Web Services ライセンスの確認 4D/4D Server: Is license available(4D SOAP License) 4D Client: Is license available(4D Client SOAP License)

Page 5: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

5

動作環境⑵ 4th Dimension 2003 ❶サーバアプリケーション

4D 2003 Windows 2000、Windows XP Mac OS 9.2.2※1、10.2.8※2、10.3.9、10.4.5

Webライセンス

4th Dimension+4D Web Extension 2003 4D Server+4D Web Extension for 4D Server 2003 4D Server+4D Web Extension for 4D Client 2003

Windows Pentium II 以上

800 x 600モニタ RAM 128MB以上(256MB以上推奨)

Macintosh

iMac以上 800 x 600モニタ RAM 128MB以上(256MB以上推奨)

※1 Mac OS 9.2.2 の場合、CarbonLibバージョン1.4 以上をインストールする。 ※2 Mac OS X 10.2.8の場合、QuickTime バージョン6.5.2 以上をインストールする。 ❷クライアントアプリケーション 4D(バージョン 2003.x 以降)、Java、Microsoft C#、VB、.NET、Office、Macromedia Flash、WebObjects、Perl、PHP ❸Web Extensionライセンス Web Extension ライセンスがない場合、デモモードで 1時間動作する。 Webサービスサーバとして 4Dを使用する場合、Web Extension ライセンスが必要。 Webサービスクライアントとして4Dを使用する場合、Web Extensionライセンスは不要。 ❹Web Services ライセンスの確認 Is license available(4D Web License)

Page 6: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

6

Web サービスの基礎 ❶WSDL (Web Service Description Language) 提供されるサービスに関するアクセス仕様を定義したXMLファイルで、メソッド・パラメータ・プロトコル・URL等の情報を提供する。(Webサービスの公開は義務ではない。) 4DはWSDLを自動生成することができる。 ❷SOAP (Simple Object Access Protocol) HTTP、XML等の標準技術を使用し、Web サービスを実行するためのプロトコル。 RFC(Request for Comment:インターネットに関する技術の標準を定めた文書)で定義され、広範囲に亘る互換性の高さが保証されている。 ※現在では SOAPは略語ではなく固有名詞になっている。 ❸UDDI (Universal Description Discovery and Integration) すべての公開Webサービスが登録されている世界規模のデータベース。 さまざなwebサービスを検索することができる。(Webサービスの登録は義務ではない。) http://www.uddi.org/ ❹SOAP 1.1 と SOAP 1.2 4th Dimension がサポートするのは、もっとも一般的な SOAP over HTTP。 専用のHTTPヘッダ SoapAction:サービス名#メソッド名を使用するのが SOAP 1.1。 Content-Type: application/soap+xml;action=サービス名#メソッド名が SOAP 1.2。 ※URL(HTTP GET)またはWebフォーム(HTTP POST)を使用するWebサービスも比較的少数ながら存在する。 ❺RPC(Remote Procedure Call)モードとDOC(Message/Document)モード WSDLでは 2種類の SOAPメッセージフォーマットを定義している。 基本的にどちらのフォーマットであっても同じサービスを実現できる。 4D 2004 は SOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

Page 7: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

7

RPC/DOCモード ❶モードの特性 入力値をひとつ渡して出力値をひとつ受け取る場合(単純入出力)は RPCが適している。 XMLをまるごと渡してXMLをまるごと受け取る場合(複合入出力)は DOCが適している。 ❷モードを選択する基準 意図的に選択するというよりは、開発環境のデフォルトのモードに準じた結果、いずかのモードに落ち着くことが多い。.NETは DOCモード、4th Dimension は RPCモードがデフォルトのモード。

❸モードによる相違点 DOCと RPCは、WSDLの構造が違うだけである。4Dでは、WSDLは自動的に生成され、また 1階層まで自動的に解析されるため、構造や解析方法を特別意識する必要はない。 RPCフォーマットのWSDL: <message name="WS_Square_rootRequest"> <part name="MyInput" type="xsd:float"/> </message> DOCフォーマットのWSDL: <element name="WS_Square_root"> <complexType> <sequence> <element minOccurs="1" maxOccurs="1" name="MyInput" type="xsd:float"/> </sequence> </complexType> </element> ※DOCと RPCで違っている部分: メソッド名WS_Square_root の挿入位置・方法。 要素名("/message/param"と"/element/complexType/sequence/element")およびその数。

Page 8: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

8

演習1

Web サービスクライアントの作成⑴ ポイント: Webサービスウィザードを利用し、WSDLからプロキシメソッドを作成する。 ❶Webサービスウィザードを起動し、WSDLの URLを入力する。

URL: http://ws.kanetaka.net/4dwsdl

❷WSDLの内容をブラウザで確認する。(Shift+検索ボタン)

❸平方根を取得するWebサービス「WS_Square_root」を選択する。

Page 9: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

9

演習1

Web サービスクライアントの作成⑵ ポイント: Webサービスを利用するには呼び出しメソッドでプロキシメソッドをコールする。 ❹作成ボタンをクリックする。

❺呼び出しメソッド 00testを作成する。

❻呼び出しメソッドを実行する。

Page 10: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

10

演習2

Web サービスクライアントの作成⑶ ポイント: フォームをデザインして簡単なアプリケーションを作成する。 ❶Webサービスウィザードを起動し、WSDLの URLを入力して検索する。 ❷郵便番号から住所を取得するWebサービス「WS_GetAddressByZipCode」を選択する。

❸作成ボタンをクリックしてプロキシメソッドを作成する。 ❹呼び出しメソッドを作成し、「実行&デバッグ」を選択して結果を確認する。

Page 11: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

11

演習2

Web サービスクライアントの作成⑷ ❺フォーム「ZIPCODE」を作成し、アクティブメニューバーを設定する。

❻検索ボタンのオブジェクトメソッドを作成する。 ❼フォームメソッドはマクロで作成する。

❽メソッドmenu_ZIPCodeを作成し、フォーム名をハイライトしてマクロを実行する。

❾メニュー「郵便番号検索」を作成し、メソッドmenu_ZIPCodeを関連づける。

Page 12: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

12

プロキシメソッド ❶変数のコンパイラ宣言と配列の宣言 RPC/単純型の SOAP型は、自動的に 4Dの変数/配列型に変換される。

SOAP型 対応する変数の4D型 boolean BOOLEAN int LONGINT time TIME float/double REAL date DATE string TEXT/BLOB base64binary BLOB ArrayOfBoolean ARRAY BOOLEAN ArrayOfInt ARRAY LONGINT ArrayOfTime ARRAY LONGINT ArrayOfFloat ARRAY REAL ArrayOfDate ARRAY TIME ArrayOfString ARRAY TEXT

※Shift_JIS→UTF-8、数値→文字は自動的に変換される。 Boolean は 0または 1という数字が返されるので数値型でも受け取れる。 XMLにテキスト長という概念はない。 64 ビット実数である double 型、32KB を超える可能性のある string 型を受け取るときはプロキシメソッドの 4D型宣言をそれぞれ TEXT、BLOBに変更することが望ましい。 ❷CALL WEB SERVICE 4Dが SOAP要求を発行してWebサービスをコールし、SOAP応答を受け取る。 ❸GET WEB SERVICE RESULT 4Dが受け取った SOAP応答を解析し、4Dの変数に値を代入する。

Page 13: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

13

演習2

ウィザードで自動生成される変数型 ポイント: Webサービスウィザードは、WSDLから 4D変数を自動的に宣言する。 ❶Webサービスウィザードを起動し、WSDLの URLを入力する。

URL: http://ws.kanetaka.net/4dwsdl ❷Webサービス「WS_VarType」を選択する。

❸詳細設定ボタンをクリックし、パラメータのタイプを確認する。 ❹生成ボタンをクリックし、生成されたプロキシメソッドのコンパイラ宣言と比較する。

Page 14: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

14

SET WEB SERVICE PARAMETER ❶SET WEB SERVICE PARAMETER クライアントで使用する引数の SOAP型は明示的に定義することができる。 SOAP型 説明 対応する変数の4D型 string 文字列 TEXT int 倍長整数 LONGINT boolean ブール BOOLEAN float 32 ビット実数 REAL decimal 小数点付きの実数 REAL double 64ビット実数 REAL/TEXT duration 年月日時分秒で表現した期間 TEXT datetime ISO8601フォーマットの日時 TEXT time 時間 TIME date 日付 DATE gyearmonth 太陽暦の年月 TEXT gyear 太陽暦の年 TEXT gmonthday 太陽暦の月日 TEXT gday 太陽暦の日 TEXT gmonth 太陽暦の月 TEXT hexbinary 16進数値 TEXT base64binary BLOB BLOB anyuri URI TEXT qname 正規 XML名 TEXT notation Notation 属性 TEXT 対応する変数の 4D型は、プロキシメソッドの中で宣言する。 カスタムの SOAP型を宣言して任意の 4D型で受け取っても構わない。 (XML要素値の解析はデベロッパの責任)

※サーバは SOAP DECLARATION、クライアントは SET WEB SERVICE PARAMETER

Page 15: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

15

4D Web サービスのエラー ❶通信プロトコルエラー HTTP上でのエラー: WebサービスのURLが間違っている Webサービスのサーバが止まっている DNSエラー ❷SOAPのエラー クライアント側: 送ったデータ(XML)が不正 範囲外の値を送った サーバ側: メソッドのシンタックスエラー メモリ不足 ❸Get Web Service error info クライアントは Get Web Service error info 関数でエラー情報を取得する。 ❹SEND SOAP FAULT サーバは SEND SOAP FAULT コマンドでエラー情報を送信する。

Page 16: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

16

演習3

クライアントのエラー処理⑴ ポイント: エラーハンドリングメソッドはON ERR CALLコマンドでインストールする。 ❶メニュー「郵便番号検索」を実行し、不正な値を入力する。

❷フォームに変数 SoapError_t を追加する。

❸検索ボタンのオブジェクトメソッドを編集する。

Page 17: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

17

演習3

クライアントのエラー処理⑵ ❹メソッド E_SOAP_Clientを作成する。(マクロ)

❺メソッドmenu_ZIPCodeを編集する。(ON ERR CALLコマンド)

❻メニュー「郵便番号検索」を実行して不正な値を入力する。

Page 18: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

18

演習3

クライアントのエラー処理⑶ ❶Webサービスウィザードを起動し、WSDLの URLを入力する。

URL: http://ws.kanetaka.net/4dwsdl ❷Webサービス「WS_ErrorTest を選択する。 ❸メソッド E_SOAP_ErrorTest作成する。(マクロ)

❸フォーム「Error」を作成し、アクティブメニューバーを設定する。 ❹オブジェクトライブラリ「WS Objects」を開く。

❺オブジェクト「エラー処理」をフォームにコピーする。 ❻メソッドmenu_Errorを作成し、フォーム名をハイライトしてマクロを実行する。

メニュー「Webサービスエラー」作成し、メソッドmenu_Errorを関連づける。

Page 19: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

19

Web サービスの種類 ❶Web Service Dynamic 単純入力: 4Dが自動的に変数をXMLに変換する。 単純出力: XMLを 4Dが解析して自動的に値を変数に返す。

❷Web Service Manual Out 単純入力: 4Dが自動的に変数をXMLに変換する。 複合出力: XMLを BLOBで受け取り、XMLを自分で解析する。 ❸Web Service Manual In 複合入力: 変数からXMLを自分で作成して渡す。 単純出力: 4Dが XMLを解析して自動的に値を変数に返す。 ❹Web Service Manual 複合入力: 変数からXMLを自分で作成して渡す。 複合出力: XMLを BLOBで受け取り、XMLを自分で解析する。 ※CALL WEB SERVICEの第 5引数で指定する。 ❺XML作成コマンド DOM Parse XML variable テキスト/BLOB変数を読み込む。 DOM Parse XML source ドキュメントを読み込む。 DOM Create XML ref 手動で作成する。 ❻複合型の対応レベル 配列は単純型として扱うことができる。 1 階層以内の複合型データはWebサービスウィザードでプロキシメソッドが生成できる。 Webサービスウィザードは複合型のWSDLを検出するとフラグを表示する。 ※自動生成プロキシメソッドのXML解析が不充分の場合、解析処理を自分で追加する。

Page 20: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

20

演習4

Web サービスダイナミック/マニュアル⑴ ❶メソッド proxy_ws_GetAddressByZipCodeを開き、全体を選択する。 ❷クリッップボード#1に内容をコピーする。(Shift+クリック)

❸新規メソッド proxy_ws_GetAddressByZipCodeMを作成する。 ❸-⑴ クリッップボード#1の内容をペーストする。(クリック) ❸-⑵ Web Service DynamicからWeb Service Manual に変更する。 ❸-⑶ コンパイラ宣言の$1;$2をBLOB型に変更する。 ❸-⑷ SET WEB SERVICE PARAMETERを BLOB型に変更する。 ❸-⑸ GET WEB SERVICE RESULT を BLOB型に変更する。

❹新規メソッド proxy_ws_GetAddressByZipCodeMIを作成する。 ❹-⑴ クリッップボード#1の内容をペーストする。(クリック) ❹-⑵ Web Service DynamicからWeb Service Manual In に変更する。 ❹-⑶ コンパイラ宣言の$1をBLOB型に変更する。 ❸-⑷ SET WEB SERVICE PARAMETERを BLOB型に変更する。

Page 21: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

21

演習4

Web サービスダイナミック/マニュアル⑵ ❺新規メソッド proxy_ws_GetAddressByZipCodeMOを作成する。 ❺-⑴ クリッップボード#1の内容をペーストする。(クリック) ❺-⑵ Web Service DynamicからWeb Service Manual Out に変更する。 ❺-⑶ コンパイラ宣言の$0をBLOB型に変更する。 ❺-⑷ GET WEB SERVICE RESULT を BLOB型に変更する。

❻フォーム「Manual」を作成し、アクティブメニューバーを設定する。 ❼オブジェクトライブラリ「WS Objects」を開く。

❽オブジェクト「Webサービスの種類」をフォームにコピーする。 ❾メソッドmenu_Manualを作成し、フォーム名をハイライトしてマクロを実行する。

メニュー「マニュアル入出力」作成し、メソッドmenu_Manualを関連づける。

Page 22: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

22

環境設定⑴

❶Webサーバ公開時オプション 自動起動する場合、「起動時にデータベースを公開する」を有効にする。 通常は、自動起動は使用せずに START WEB SERVERコマンドで起動するほうが良い。 HTTPのデフォルト TCPポートは 80番。(Mac OS Xでは管理者権限が必要。) マシンに複数の IP アドレスが設定されている場合、反応アドレスを指定することができる。 https://xxx/のアクセスを許可する場合、「Webサーバに SSLを許可する」を有効にする。(cert.pem、key.pemが必要。) ❷デフォルトHTMLパス 自動応答するHTMLファイル、ファイルなどを保存してある場所。 ❸開始時のモード 4D Client はコンテキストモードがないため、Web リクエスト毎に Web プロセスを起動する。「一時的なコンテキストを再利用する」オプションを使用すれば、Web プロセスを再利用することができるが、変数、カレントセレクションの初期化が必須になる。

Page 23: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

23

環境設定⑵

❶キャッシュ 非コンテキストモード使用時に外部ファイルをキャッシュするサイズ。 ❷Webプロセス 同時に動作する最大プロセス数、コンテキストモードのWebプロセスタイムアウト。 ❸オプション Webアクセスログファイル(logwe.txt)の典型的な内容: 127.0.0.1 - 4D [26/Jul/2006:07:53:20 +0900] "POST /4DSOAP/ HTTP/1.1" 200 559 ❹Webパスワード 「パスワード使用」が有効であれば、On Web Authentication データベースメソッドが実行される。Webのベーシック認証は、簡単な利用者の確認を想定したものであり、セキュリティは高くないので、4Dのパスワードを含めることはあまり推奨されていない。

Page 24: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

24

環境設定⑶

❶拡張文字を直接送信 非 Roman文字を直接送信しない場合: &#130;&#160;&#130;&#162;&#130;&#164;&#130;&#166;&#130;&#168; 非 Roman文字を直接送信する場合: あいうえお ❷スタンダードセット Shift_JIS(Japanese)を使用する。 ❸4D Connect WebSTAR の 4DSSI(Server Side Include)プラグインを使用しない場合、無効にする。 ❹Keep Alive 接続 HTTP 1.0 ではリクエスト毎に接続が発生するが、HTTP 1.1 では一定リクエスト数(デフォルトで 100)または一定時間(デフォルト 15秒)、接続を持続することができる。クライアント(ブラウザ)がHTTP 1.1 をサポートしていない場合、HTTP 1.0 に切り替わる。

Page 25: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

25

環境設定⑷

❶ブラケットの代わりに4DVARコメントを使用する <!--4Dxxx-->を使用するときは必ずチェックする。 ❷新しいコンテキスト参照モードを使用 サブコンテキスト IDを効率的に使用する。 ❸未知のURLから"/"を取り除く URL(フォルダ名/ドキュメント名)で指定された場所にファイルがない場合、またはデフォルトホームページ未設定で URL(フォルダ名/)を受け付けた場合、バージョン 2003 では、On Web Authentication/On Web Connectionの$1に「フォルダ名/ドキュメント名」または空の文字列が返されていた。バージョン 2004では、「/フォルダ名/ドキュメント名」または「/」が返される。「未知のURL~」オプションは、過去の動作を再現するもの。 バージョン2004 で$1が"/"から始まらないのは、以下の場合: <!--#4DSCRIPT/メソッド名--> タグには"/"がある点に注意。 <!--#4DLOOP メソッド名--><!--#4DENDLOOP--> ループ開始時に一回。 <!--#4DVAR メソッド名--><!--#4DHTMLVAR メソッド名-->

Page 26: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

26

環境設定⑸

❶Webサービスリクエストを許可する 4Dを Webサービスサーバとして公開するためのオプション。 ❷Webサービス名 デフォルトの設定は「A_WebService」。 ❸Webサービス名前空間 名前空間には、同名のXML要素を区別する役割がある。 文法的に正しいURI ではあれば、実在しないURLであっても構わない。 デフォルトの設定は「http://www.4d.com/namespace/default」 ❹ウィザードメソッドプリフィックス Webサービスをコールするプロキシ(代理)メソッドの接頭辞。 デフォルトの設定は「proxy_」カスタマイズしても、Webサービスの動作には影響ない。

Page 27: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

27

データベースパラメータ ❶Web関連の SET/GET DATABASE PARAMETER 環境設定は 4D Server またはすべての4D Clientに対して適用される。(要注意) 4D Client 各マシンに対して適用されるのは SET/GET DATABASE PARAMETER。 定数 デフォルト値 Minimum Web Process(6) Client Minimum process Web(19)

0 ※1

Maximum Web Process(7) Client Maximum process Web(20)

10 ※1

Port ID(15) Client Port ID(22)

80

IP Address to listen(16) Client IP Address to listen(23)

0 [すべて]

Character set(17) Client Character set(24)

1 [日本語])

Max Concurrent Web Processes(18) Client Max Concurrent Web Proc(25)

32000 ※2

Maximum Web requests size(27) Client Max Web requests size(21)

20000

Web Log Recording(29) Client Web Log Recording(30)

0[作成しない])

Web conversion mode(8) 0 ※3

TCP_NODELAY(33) 1[有効] ※4

※1 非コンテキストモードのWebプロセスは終了後 5秒以内であれば再利用される。 ※2 コンテキスト・非コンテキスト・待機中を含むWebプロセスの最大数。 ※3 コンテキストモードのフォームからHTMLへの変換モードはWebプロセス毎に設定。 ※4 TCP/IP の内部設定で、無効にすることによって通信が速くなる場合がある。

Page 28: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

28

演習5

Web サービスサーバの作成⑴ ポイント: Webサービスとして公開するメソッド名には使用できない文字がある。 ❶平方根を返すメソッドWS_Square_rootを作成する。(マクロ)

※SOAPでは、メソッド名がXMLタグになるため、Webサービスとして公開できるメソッド名には次の文字だけが使用できる。(大文字と小文字は区別する。) A-Z [大文字] a-z [小文字] 0-9 [数字] -._ [ハイフン、ピリオド、アンダースコア] スペース、半角カナ、全角文字は使用できない。 コロンは「名前空間」で予約されているので使用しない。 「XML」から始まる名前は予約されているので使用しない。 数字、アンダースコア以外の記号から始まる名前は使用できない。 ※4Dの制限事項とは異なるので注意。

Page 29: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

29

演習4

Web サービスサーバの作成⑵ ❷Webサービスの説明文を作成する。

※Webサービスの説明文はエクスプローラのメソッドタブでコメントとして入力する。 ❸メソッドプロパティを「Webサービスとして提供/WSDLで公開する」に設定する。

Page 30: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

30

演習4

Web サービスサーバの作成⑶ ❹Webサーバを起動する。

※Mac OS Xの場合、ポート 8080番で公開する。 ❺Webサービスウィザードを起動する。 URL: http://localhost/4DWSDL Mac OS Xの場合: URL: http://localhost:8080/4DWSDL

※パラメータの名前はデフォルトで FourD_arg1、FourD_arg0...に設定される。

Page 31: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

31

演習4

Web サービスサーバの作成⑷ ポイント: Webサービスで使用するプロセス変数および配列はCOMPILER_WEBで宣言する。 ❻ダイアログを一旦キャンセルし、メソッドWS_Square_rootのコメントを取り除く。

※SOAP DECLARATIONは、Webサービスで使用するパラメータの型と公開名を宣言するコマンド。使用すれば、パラメータに名前が付けられるだけでなく、標準のパラメータ($0、$1...)では不可能な配列を受け渡したり、32KBを超えるテキストを受け渡したり、複数の返り値を返したりすることができる。 ❼COMPILER_WEBメソッドを作成する。

❽Webサービスウィザードを開き、プロキシメソッドを作成する。 ※同名のプロキシメソッドを演習で作成しているので、プロキシメソッド名を変更する。

Page 32: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

32

SOAP DECLARATION ❶SOAP DECLARATION RPC/単純型の SOAP型では、SOAP DECLARATIONコマンドで宣言する。 DOC/複合型の SOAPでは、AsXMLという「型」でXMLそのものを受け渡しする。 SOAP型 SOAP型宣言の定数 対応する変数の4D型 boolean Is Boolean BOOLEAN int Is Integer/Is Longint LONGINT time Is Time TIME float Is Real REAL date Is Date DATE string Is Text/Is String Var TEXT/BLOB base64binary Is BLOB BLOB ArrayOfBoolean Boolean array ARRAY BOOLEAN ArrayOfInt Integer array/Longint array ARRAY LONGINT ArrayOfTime Longint array ARRAY LONGINT ArrayOfFloat Real array ARRAY REAL ArrayOfDate Date array ARRAY TIME ArrayOfString Text array/String array ARRAY TEXT 入力変数の場合、対応する変数の 4D型は別途、Compiler_webメソッドの中で宣言する。 ※サーバは SOAP DECLARATION、クライアントは SET WEB SERVICE PARAMETER 32KBを超える SOAP text を返す場合、変数型をBLOB、SOAP型を Is textで宣言する。 ❷入出力タイプ Webサービスメソッドが受け取る引数は SOAP Input、返す値は SOAP Output。

Page 33: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

33

演習6

DOC モードでWeb サービスを公開する ポイント: サーバ側で特に設定することはない。 ❶Webサービスウィザードを起動する。 URL: http://localhost/4DWSDL/DOC Mac OS Xの場合: URL: http://localhost:8080/4DWSDL/DOC

※ウィザードは複合型を検出するとフラグを表示する。 ❷WSDLの内容をブラウザで確認する。(Shift+検索ボタン) ※RPCとDOCのWSDLは異なっている。 ❸プロキシメソッドを作成する。 ※同名のプロキシメソッドを演習で作成しているので、プロキシメソッド名を変更する。 ※1階層の複合型なので、ウィザードでプロキシメソッドが完全に自動生成できる。

Page 34: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

34

演習7

サーバのエラー処理 ポイント: リクエストに応じられない理由を SEND SOAP FAULT でクライアントに通知する。 ❶メソッドWS_Square_rootにエラー処理を追加する。

❷メソッド 00testを負の値で実行する。

※サーバのローカルエラーはON ERR CALL で処理することが望ましい。 目的: ダイアログ画面を表示しないため。 エラーログを記録するため。 サーバに起因するエラー情報を SOAPクライアントに通知するため。 SEND SOAP FAULT コマンドの動作: HTTP 応答コードを「500 Server Internal Error」に設定する。 SOAPボディに正規(SOAP 1.1/SOAP 1.2)の Fault 要素を挿入する。 SOAPレスポンスを送信する。

Page 35: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

35

データベースメソッド ❶On Web Authentication データベースプロパティで「パスワード使用」がチェックされている場合、またWebによりメソッドの実行が要求された場合に実行されるメソッド。 メソッドの実行をWebで要求する方法:

URLに/4DACTION/メソッド名を含める (非コンテキストモード) URLに/4DMETHOD/メソッド名を含める (コンテキストモード) URLに/4DCGI/アクション名を含める (アクション名の解釈は任意) URLに存在しないパス名を含める (パス名の解釈は任意) URLに/4DSOAP/を含める (Web services)

❷On Web Connection Web接続のたびに実行されるメソッド。 ※ファイルダウンロードの際は実行されない。 Web接続をする方法: コンテキストモードでデータベースに接続する URLに/4DCGI/アクション名を含める URLに存在しないパス名を含める ❸On Startup 4D: 起動時に実行されるメソッド。 4D Client: クライアント接続が受け入れられた後、クライアントで実行されるメソッド。 ※起動時に公開する場合、On Startup 実行中にWebプロセスが独立して起動する。 ❹On Server Startup データベースを4D Serverで開いた時にサーバで一度だけ実行されるメソッド。4D Serverセッションを通じて使用されるインタープロセス変数の初期化、設定ファイルやリソースファイルの読み込み、ストアドプロシージャを起動時に実行するためなどに使用する。

Page 36: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

36

On Web Authentication ❶On Web Authenticationの引数 引数 型 説明 $0 BOOLEAN 接続を許可するならTrue を代入 $1 TEXT ホスト名を除くURL $2 TEXT HTTPヘッダ+HTTPボディ(最長 32KBまで) $3 TEXT クライアントの IPアドレス $4 TEXT サーバの IPアドレス $5 TEXT ユーザ名 $6 TEXT パスワード $0 未定義の場合、接続は許可される。 $1 OWAが実行されたコンテキストを特定するために使用できる。 $2 完全なヘッダとボデイはGET HTTP HEADER、GET HTTP BODYで取得する。 $3 クライアントの IPアドレスによる許可/拒否などに利用できる。 $4 マシンに複数の IPアドレスが設定されている場合、ホーミングに使用する。 $6 $5 が 4Dユーザ名の場合、空の文字列が返される。 ❷SOAPリクエストであることを調べる方法 Is SOAP request ($1="/4DSOAP/") not(Web context) Get SOAP info(SOAP Method Name) ※Get SOAP info(SOAP Service Name)は使用しない。(SOAP 1.1 非対応であるため) ❸未知のURLから/を除く (環境設定/互換性オプション) 無効なURLを受け付けた場合、On Web Authentication/Connection が発生する。 このときのURLは"/"から始まる。(バージョン 2003以前は"/"の次の文字から始まる)

Page 37: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

37

On Web Connection ❶On Web Connectionの引数 引数 型 説明 $1 TEXT ホスト名を除くURL $2 TEXT HTTPヘッダ+HTTPボディ(最長 32KBまで) $3 TEXT クライアントの IPアドレス $4 TEXT サーバの IPアドレス $5 TEXT ユーザ名 $6 TEXT パスワード ❷OWAとの相違点

コンテキストモード OWA OWC /4DCGI/アクション名 OWA OWC /4DSOAP/ OWA /4DACTION/ OWA /4DMETHOD/ OWA OWC 未知のURL OWA OWC <!-- 4DSCRIPT メソッド名--> OWA

OWAで$0にFalseが代入された場合、OWCは実行されない。 OWCで$0に値を代入することはない。 ❸OWA/OWCデータベースメソッドの注意点 インタフェース(DIALOG、ALERT...)をコールした場合、またはメソッド実行中にエラーが発生した場合、メソッドの実行は中断、接続は拒否される。

Page 38: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

38

演習8

ベーシック認証⑴ ポイント: ベーシック認証の「ユーザ名:パスワード情報」はBASE64エンコードされている。 ワイルドカード「@」の対策を講じる必要がある。 ❶メソッドOWA_BasicValidationを作成する。(マクロ)

❷リスト「names」「passwords」を作成する。

❸On Web Authentication データベースメソッドを作成する。

❹メソッド 00testを編集して実行する。

Page 39: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

39

演習8

ベーシック認証⑵ ポイント: 「パスワード有効」であれば、OWAの$5、$6 にユーザ名とパスワード情報が代入される。 4Dユーザとして認証されている場合、$6には空の文字列が代入される。 ❶ツールボックスでユーザ&グループを開き、Designer のパスワードを設定する。 ❷CHANGE CURRENT USERSコマンドだけのメソッドを作成して実行する。 ❸Administrator としてログインする。 ❹ツールボックスでユーザ&グループを開き、新規ユーザを作成する。(パスワード設定) ❺環境設定/Web/詳細で「パスワード有効」を有効にする。 ❻On Web Authentication データベースメソッドを編集する。

※DELAY PROCESSは、認証の総当たり(フラッディング)を防止するため。 ❼メソッド 00testを編集して実行する。(作成した新規ユーザのログイン情報を使用)

❽環境設定/Web/詳細で「4Dパスワードを含む」を有効にする。 ❾メソッド 00testを実行する。

Page 40: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

40

HTTP 接続 ❶HTTP (HyperText Transfer Protocol) Webブラウザ、Webプロキシ、Webサーバの動作を定義したもの。 標準テキストのプロトコルであり、同じく標準テキストであるSOAP/XMLと相性が良い。 HTTPの知識は、Webサービスのデバッグに役立つ。4DはHTTP 1.1 をサポート。 ※HTTP/1.0 RFC 1945、HTTP/1.1 RFC 2068 ❷基本構造 クライアントからの要求に対してサーバの応答が返される。 HTTPではリクエストとリクエストの間でクライアントに関する情報を保持しない。 代表的なクライアントは、Webブラウザ(Internet Explorer、Netscape...)。 代表的なサーバは、Webサーバ(WebSTAR、Netscape、IIS...)。 ❸HTTP接続

ブラウザ

Web サーバ

要求: GET /hello.html HTTP/1.1

応答: HTTP/1.1 200 OK [CR+LF] Content-type: text/html [CR+LF] Content-length: 34 [CR+LF] [CR+LF] <html> <body>hello 4D</body> </html>

Page 41: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

41

SOAP ❶SOAP接続 (HTTP経由) ※SOAPリクエストはPOSTで送信する。(GETにはHTTPボディがない) ❷URLの表記 http://id:[email protected]/hello.html http://id:[email protected]/cgi.exe?var1=value1&var2=value2&varn=valuen

クライアント

SOAPサーバ

要求: POST /4DSOAP/ HTTP/1.1[CR+LF] [CR+LF] SOAPメッセージ

応答: HTTP/1.1 200 OK [CR+LF] Content-type: text/html [CR+LF] Content-length: 5000 [CR+LF] [CR+LF] SOAPメッセージ

Page 42: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

42

SOAP メッセージの構造 ❶SOAPリクエスト (POST)

要求メソッド HTTPヘッダ

[空行] SOAPヘッダ(オプション) HTTPボディ

SOAPボディ(XML)

❶SOAPレスポンス

応答コード HTTPヘッダ

[空行] SOAPヘッダ(オプション) HTTPボディ

SOAPボディ(XML)

SOAPメッセージはHTTPボディの中、SOAPエンベローブで送信される。 SOAPヘッダには、セキュリティ、セッション、トランザクション情報を格納する。(任意) SOAPボディはXML形式のテキスト。

Page 43: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

43

HTTP リクエスト ❶HTTPクライアントの要求 ブラウザからWebサーバへの通信。 HTTPクライアントからの通信で始まり、HTTPサーバの応答で通信を終了する。 GET /index.html HTTP/1.1 要求メソッド

Connection: keep-alive 汎用ヘッダ

Host: localhost:8080 要求ヘッダ

User-Agent: Mozilla/5.0 要求ヘッダ

(Macintosh; U; PPC Mac OS X; ja-jp)

AppleWebKit/312.1.1 (KHTML, like Gecko) Safari/312

Accept: */* 要求ヘッダ

Accept-Encoding: gzip, deflate 要求ヘッダ

Accept-Language: ja-jp 要求ヘッダ

(空行) 本体(テキスト/バイナリ) ❷GET HTTP HEADER(header) On Web Authentication/Connection の$2 と同じ値が返される。 GET /index.html HTTP/1.1 (CR+LF)

Cookie: C=HELLO

❸GET HTTP HEADER(fieldArray;valueArray) HTTPヘッダのフィールド名:フィールド値が配列に返される。 fieldArray{1} = "X-METHOD" valueArray{1} = "GET"

fieldArray{2} = "X-URL" valueArray{2} = "/index.html"

fieldArray{3} = "X-VERSION" valueArray{3} = "HTTP/1.1"

fieldArray{4} = "Cookie" valueArray{4} = "C=HELLO"

※冒頭の3行はヘッダフィールドではない点に注意。

Page 44: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

44

HTTP レスポンス ❶HTTPサーバの応答 ブラウザの要求に対するWebサーバの応答。 HTTPクライアントからの通信で始まり、HTTPサーバの応答で通信を終了する。 HTTP/1.1 200 OK 応答コード Date: Mon, 24 Jul 2006 09:58:02 GMT 汎用ヘッダ

Server: 4D_WebStar_D/2004 応答ヘッダ

Last-Modified: Mon, 24 Jul 2006 09:57:39 GMT 本体ヘッダ

Expires: Tue, 25 Jul 2006 09:57:39 GMT 本体ヘッダ

Content-Type: text/html;Charset=Shift_JIS 本体ヘッダ

Content-Length: 10780 本体ヘッダ

Connection: close 本体ヘッダ (空行) <HTML> 本体(テキスト/バイナリ) <HEAD>

...

</HEAD>

</HTML>

❷SET HTTP HEADER(header) Header:= "HTTP/1.1 200 OK"+Char(13)+"Set-Cookie: C=HELLO"

❸SET HTTP HEADER(fieldArray; valueArray) fieldArray{1}:="Set-Cookie"

valueArray{1}:="C=HELLO"

※Server、Date、Content-Length は 4Dが自動的に設定する。 「HTTP/1.1 200 OK」は省略しても構わない。

Page 45: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

45

要求メソッド ❶GET サーバから文書やデータを取得する場合に使用する。 データを送る場合は URLを使用する。(1000文字以内) 本体(HTTP BODY)は使用しない。 http://127.0.0.1/4DACTION/WEBFORM?vNAME=ROBERT&vCITY=DALLAS

GET WEB FORM VARIABLES(nameArray;valueArray) nameArray{1} = "vNAME" valueArray{1} = "ROBERT"

nameArray{2} = "vCITY" valueArray{2} = "DALLAS"

❷POST サーバにクライアントからデータを送る場合に使用する。 GETより多くのデータを送信できる。 http://127.0.0.1/4DACTION/WEBFORM

GET HTTP BODY (body) body=本体(HTTP BODY) ❸HEAD サーバからヘッダ情報(更新時間、サイズ、タイプ)だけを受け取って本体は受け取らない。 データが更新されているか調べるために利用される。 ❹PUT、DELETE、TRACE、OPTIONS 4Dでは扱わない。

Page 46: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

46

応答コード⑴ ❶100 系 処理中の通知 100 Continue 101 Switching Protocols ❷200 系 処理成功 200 OK 201 Created 202 Accepted 203 Non-Authoritative Information 204 No Content 205 Reset Content 206 Partial Content ❸300 系 URLの移転通知 300 Multiple Choices 301 Moved Permanently 302 Moved Temporarily 303 See Other 304 Not Modified 305 Use Proxy 通常の SOAP応答では「200 OK」が返される。 SEND SOAP FAULT コマンド使用時には「500 Internal Server Error」が返される。 HTTP REDIRECTコマンド使用時には「302 Moved Temporarily」が返される。

Page 47: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

47

応答コード⑵ ❹400 系 処理失敗 400 Bad Request 401 Unauthorized 402 Payment Required 403 Forbidden 404 Not Found 405 Method Not Allowed 406 Not Acceptable 407 Proxy Authentication Required 408 Request Time-out 409 Conflict 410 Gone 411 Length Required 412 Precondition Failed 413 Request Entity Too Large 414 Request-URI Too Large 415 Unsupported Media Type ❺500 系 サーバ内部エラー 500 Internal Server Error 501 Not Implemented 502 Bad Gateway 503 Service Unavailable 504 Gateway Time-out 505 HTTP Version not supported 認証が必要なページにアクセスすると「401 Unauthorized」と「WWW-Authenticate」ヘッダが返され、これを受け取ったブラウザは認証要求のダイアログを表示する。 基本認証では、入力されたIDとPasswordをBase64エンコーディングし「Authorization」ヘッダにその情報を付加する。

Page 48: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

48

主要なHTTPヘッダ⑴ ❶汎用ヘッダ Cache-Control Connection Date Pragma: no-cache プロキシにキャッシュさせない設定 MIME-Version ❷要求ヘッダ Accept Accept-Charset Accept-Encoding Accept-Language 言語(セミコロン区切り) Authorization 認証情報 Cookie Cookie の内容 From ブラウザユーザのメールアドレス Host バーチャルホストの識別に利用 Referer リクエスト元(戻るボタンで表示されるページ) User-Agent アプリケーション/プロキシ名とバージョン

❸応答ヘッダ Accept-Ranges Location 移転先のURL Server Set-Cookie Cookie の書き込み Warning WWW-Authenticate

※AUTHENTICATE WEB SERVICEコマンドでAuthorization ヘッダだけが設定できる。

Page 49: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

49

主要なHTTPヘッダ⑵

❹本体ヘッダ Allow Content-Base Content-Encoding Content-Language Content-Length Content-Location Content-MD5 Content-Range Content-Type 本体のMIME-Type Expires URI ※RFC 2616: Hypertext Transfer Protocol--HTTP/1.1 では、約 50種類のヘッダを定義している。ヘッダとボディは空行(CR+LF+CR+LF)で区切られる。

Page 50: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

50

補足資料1

SET WEB SERVICE OPTION ❶Web Service HTTP Timeout+タイムアウト秒数 クライアントが接続を切断するまでの待機時間。デフォルトのタイムアウトは 10秒。 変更は、カレントプロセスにおける次のCALL WEB SERVICE(1回)に反映される。 ❷Web Service SOAP Header+ヘッダとして挿入するXMLの rootRef SOAPヘッダは、HTTPボディの中に記述する。(HTTPヘッダではない) クライアントのSOAPヘッダはSET WEB SERVICE OPTIONコマンドで設定する。 (セキュリティ、セッション、トランザクション等の情報など。) ※サーバの SOAPヘッダを設定するコマンドはない。

❸Web Service SOAP Version+Web Service SOAP_1_1または 2 SOAP プロトコルのバージョン(1.1 または 1.2)を指定。 ❹SOAP 1.1 と SOAP 1.2 SOAPクライアントの動作はデフォルトで SOAP 1.1。 クライアントの SOAP 1.2 は SET WEB SERVICE OPTIONコマンドで設定する。 SOAPサーバの動作はリクエストのバージョン(SOAP 1.1 または 1.2)に対応する。 SOAP 1.1 の HTTP ヘッダ(リクエスト): POST /4DSOAP/ HTTP/1.1

User-Agent: 4D built-in SOAP Client

Content-type: text/xml; charset=utf-8

SoapAction: "サービス名#メソッド名" SOAP 1.2 の HTTP ヘッダ(リクエスト): POST /4DSOAP/ HTTP/1.1

User-Agent: 4D built-in SOAP Client

Content-type: application/soap+xml; action="サービス名#メソッド名"

Page 51: 4th Dimension 2004 Webサービス入 門 - 日本kb.4d-japan.com/FAQ/140/Web_Services_2004.pdf4D 2004はSOAPクライアントとサーバの両方でRPCとDOCをサポートしている。

51

補足資料2

SOAP メッセージの構造 <?xml version="1.0" encoding="UTF-8" ?>

<SOAP-ENV:Envelope

SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encod

ing/"

xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"

xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/"

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<SOAP-ENV:Header/>SET WEB SERVICE OPTIONで設定

<SOAP-ENV:Body>

<WS_Square_root xmlns="http://www.4d.com/namespace/default">

<MyInput>2</MyInput>DOC要求

<MyInput xsi:type="xsd:float">2</MyInput>RPC要求

<ns1:Result>1.4142135623731</ns1:Result> DOC応答

<Result xsi:type="xsd:float">1.4142135623731</Result> RPC応答

</WS_Square_root>

<SOAP-ENV:Fault/>SEND SOAP FAULTコマンドで設定

</SOAP-ENV:Body>

</SOAP-ENV:Envelope>

実際には要求・応答・Fault のいずれかひとつだけが存在する。