「まるごとPHP vol.1」で紹介されていたPEARのSOAPライブラリ。自分はNuSOAPを使ってきて、PEARのものは知らなかった。中を見てみるとNuSOAPをPEARに持ってきたもののようでOriginal AuthorはNuSOAPの人になっている。ただ、NuSOAPの方はNuSOAPとして開発は継続されている。逆にPEAR::SOAPの最新版が0.8RC3=>2004-01月で、NuSOAP 0.6.7=>2004-05の方が新しく活動が活発な印象を受ける。
試しに使ってみると
- NuSOAPでは復帰値は連想配列だったが、PEAR::SOAPではstdClassのObjectになっているようだった。といってもその中は連想配列だからあまり変わらないみたいだ。
- 添付ファイルでMIMEやDIMEにも対応しているようだ。
- エンコーディングは実質UTF-8のみ。NuSOAPの場合にはShift_JISも指定しようと思えばできた(ただレスポンス中の日本語は化けた)。UTF-8を使っていれば日本語もOKのようだ。
- デバッグ用にHTTPのトレースを出力したい場合にはオプションに「'trace' => 1」を指定してから、「$soapclient->__get_wire()」で参照する。
require_once("SOAP/Client.php"); $soapclient = new SOAP_Client('myservice.wsdl'); // 必要なら文字コードをUTF-8にしておく。 $text = mb_convert_encoding($text, 'UTF-8', 'Shift_JIS'); $parameters = array( 'param1' => "value1", 'param2' => "value2", 'param3' => $text, ); $options = array( 'namespace' => 'urn:myservice_namespace', 'trace' => 1, ); $ret = $soapclient->call("method_name", $parameters, $options); if (PEAR::isError($ret)) { print("Error: " . $ret->getMessage() . "<br>\n"); print $soapclient->__get_wire();echo "<br>\n"; } else { print("Success: "); var_dump($ret); print("<br>\n"); }