chakokuのブログ(rev4)

日々のごった煮ブログです

PHPでSOAPを使う

phpsoapを使う方法として、以下の3種類ある

  • nuSoapを使う(ちょっと古いようだが)
  • PEAR::SOAP を使う (php 4の場合)
  • SOAP拡張モジュールを使う (php5の場合)

pear::soapで少し調べてみたがあまり情報もなく、これからはsoap拡張モジュールが増えるのでは?と思い、これを使ってSOAPを実行してみる。ただし、先方のSOAPサービスにはWSDLがないので、低いレイヤー(素のXML?)で実装する必要がある!?

とりあえず、php5をsoap対応にするため、--enable-soapを付けて再度コンパイル。。
./configure --with-libxml-dir=/usr/local --enable-mbstring --enable-soap

SOAP拡張モジュールのサンプルは、大抵、WSDLを使っていて、WSDLさえ読み込めばあとはメソッドコールが簡単に行える。が!、今接続しようとしているSOAPサービスにはWSDLがない。。となると、手書きでSOAP BODYを書く必要がある。

どうにでも振り回せるのは、__doRequestメソッドの様で、第一引数にSOAPエンベロープを作って実行するらしい。例のSOAPの定義をずらずらと手作りする必要がある。もう少し楽なのは、__soapCallであり、Envelope属性が自動的に作られるが、BODYがSOAPの仕様に従って作られるので、接続したいSOAPサービスと一致しない場合は使えない。
(浅い理解の程度の結論)