「まるごと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");
}