PHP中如何调用webservice的实例参考

yipeiwu_com7年前PHP代码库

下面用一个例子说明:web service服务是查询QQ用户是否在线

使用php5开发客户端:

复制代码 代码如下:

<?php
try {
    //$client = new SoapClient("HelloService.wsdl",array('encoding'=>'UTF-8'));
    $client = new SoapClient("http://webservice.webxml.com.cn/webservices/qqOnlineWebService.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接收到以后会自己把数据内容解析出来,而不是xml字符串.

相关文章

php readfile下载大文件失败的解决方法

本文实例讲述了php readfile下载大文件失败的解决方法。分享给大家供大家参考,具体如下: 大文件有200多M,只下载了200K就提示下载完成,且不报错。 原因是PHP内存有限制,...

PHP判断一个变量是否为整数、正整数的方法示例

在PHP中判断一个变量是否为整数 在写PHP代码的时候遇到这样一个小问题:如何判断一个变量是否为整数,于是在网上找到了两个方法来解决,在此做一个小小的记录。 方法1 <...

php下的权限算法的实现

权限设计 大概有这几种模式: 用户+组+角色+权限 用户+组+权限 用户+角色+权限 用户+权限 最近看了别人的设计方法,大多以“整数”来表示权限值,如添加、浏览、删除和修改,分别用1...

php在apache环境下实现gzip配置方法

本文实例讲述了php在apache环境下实现gzip配置方法。分享给大家供大家参考。具体如下: 1、conf/httpd.conf 1) 去掉#LoadModule headers_mo...

php中ftp_chdir与ftp_cdup函数用法

本文实例讲述了php中ftp_chdir与ftp_cdup函数用法。分享给大家供大家参考。具体用法如下: ftp_chdir()函数 若成功,则返回 true,否则返回 false,如果...