background image

PHP 实例:调用 webservice 的实例参考

本文主要介绍了,PHP 中如何调用 webservice 的并给出实例参考
下面用一个例子说明:web service 服务是查询 QQ 用户是否在线
使用 php5 开发客户端:
代码如下:
<?php
try {
//$client = new SoapClient("HelloService.wsdl",array('encoding'=>'UTF-8'));
$client

 

=

 

new 

SoapClient("http://webservice.webxml.com.cn/webservices/qqOnlineWebServi
ce.asmx?wsdl");
var_dump($client->__getFunctions());
print("<br/>");
var_dump($client->__getTypes());
print("<br/>");
class qqCheckOnline{
var $qqCode = "10000";
};
$arrPara = array(new qqCheckOnline);
$arrResult

 

=

 

$client->__Call("qqCheckOnline",$arrPara);//$client-

>qqCheckOnline($arrPara);

echo $arrResult->qqCheckOnlineResult . "<br/>";
} catch (SOAPFault $e) {
print $e;
}
?>

代码确实很简单吧,创建 SoapClient 对象时,可以使用保存在本地 WSDL 文件,也可
以使用远程的地址,后面的 array 数组里可以带上很多的参数,具体参数可以查 php 的
SoapClient 帮助,这里带的是字符集编码,如果调用方法的参数里有中文,一定要指定
字符集编码,否则会出错。
调用 web service 前可以先调用 SoapClient 的__geunctions()和__getTypes()方法看
一下你要调用的 web service 暴露的方法,参数和数据类型,需要注意的是传入的参数
名一定要和 soapclient 里面定义的一致,否则参数是传不过去的。
需要使用 SoapClient 的__soapCall()或__call()方法,具体使用方法可以查 php 的帮助
文档。如果参数要求是一个结构体,请用类代替,如上面的代码。
另外发现个问题,如果 web service 方法返回的是 xml 格式的字符串,php 接收到以后会