随着WebService的普及,PHP也逐渐对其加强了支持。PHP的SOAP库可以用于创建SOAP服务器和客户端,这里先讨论客户端访问的情况。在Windows下的PHP默认没有打开PHP的SOAP扩展函数库,所以首先要在php.ini里加上一个extension=php_soap.dll;而在Linux下据说要用Gnome xml库:libxml。
其实就是一个SoapClient类。其构造函数原型是:
SoapClient {
__construct(mixed wsdl,
array options);
}
提供两种方式的构造方式:可以提供一个WSDL,也可以在options里指定Location和URI。
$client = new SoapClient("some.wsdl");
$client = new SoapClient(null, array('location' => "http://localhost/soap.php",
'uri' => "http://test-uri/"));
然后就可以像调用成员函数一样调用WebService里面的函数了,当然也可以用__call()方法:
$r = $client -> func($para1,$para2...);
$r = $client -> __call("func", array($para1,$para2));
其中func是要调用的函数名,返回的$r是一个对象,可以访问其成员“funcResponse”来获取返回值。
主要的技术就是这样,但似乎不支持异步调用。而我试了一下,当返回值是整型时,好像一直是0,不知道是哪里出错了,还是库本身有问题。