現在の案件でPHPでSOAPを使うことになったので、それについてちょっとメモ書きをしときます。
今回はPHP5なので、php-soapを使うこととした。
今回の問題点は、SOAPサーバがないのにSOAPクライアント作れって言われてるところ。
SOAPクライアントの動作を試すために、ダミーのSOAPサーバも作らなくてはならない。
まあ問題は他にもたくさんあるけれど、守秘義務ってことで!!
◆SoapClientについて
・インスタンス生成時のオプションについて
style・・・SOAP_RPC,SOAP_DOCUMENTの2種類がある。SOAP_DOCUMENTにしたら、SOAPの文字列になるだけっぽい。SOAP_RPCの場合(基本的にこっちが主流?)、サーバ側に準備されているメソッドをコールするのだが、自動的にenv:Bodyの第一要素名がコールされるメソッド名になる。
・名前空間の定義について(WSDLなしで)
なんか、自動的にns1とかns2とか振られる。こっちで制御できんのか?
SoapClientだと仕様書通りのXMLが生成できなかったので、domDocumentオブジェクトを使ってXMLを作った。
◆SoapServerについて
SoapServerは、SOAP_RPCでくるのを前提として待ち構えてる?
仕様書通りのSOAPドキュメントを作成して送信したら、第一要素名のメソッドが定義されてないって怒られた。SoapClient側で__doRequestメソッドを使ってSOAPアクションを指定しても、同様。
SOAPは初めてだけど、奥が深そうです。
しかし、開発の順序として、SOAPサーバがあってからだろ!と突っ込まざるを得ない。