来源:自学PHP网 时间:2014-11-27 22:16 作者: 阅读:次
[导读] SoapClient,php5自带的,当然,也可以使用nusoap php这个纯php写的类,该类代码行数为7K多行,效率上肯定不如SoapClient 一、寻找WebService来源WebService可以自己编写,但是也可以从网络上去寻找现成...
php soap 调用webservice应用测试SoapClient,php5自带的,当然,也可以使用nusoap.php这个纯php写的类,该类代码行数为7K多行,效率上肯定不如SoapClient. 一、寻找WebService来源 WebService可以自己编写,但是也可以从网络上去寻找现成的,我用的是www.xmethods.net里的US Zip Validator,它的WSDL文件位置在:http://www.webservicemart.com/uszip.asmx?WSDL,它的作用是根据输入的ZIP代码,返回该代码对应的美国地名,州名,经纬度等. 二、创建SoapClient 第二步就是创建SoapClient,并调用WebService中的方法,并获得返回值,PHP代码如下:
SoapClient的创建有好多方法,我们用的是最标准的(也是最简单的)WSDL方法,由于查询ZIP的方法肯定需要一个参数,所以我们必须创建一个数组,用“参数名=>取值”的方式进行赋值. 也许读者会对这个数组的创建有一定的兴趣,比如,我们怎么知道“参数名”应该是“ZipCode”而不是别的什么呢?为什么没有更多的参数了,而只有一个?OK,这个问题我们稍后解释,因为这牵涉到WSDL的解读. 创建好参数后,同样的,我们调用SoapClient的方法ValidateZip,并传递参数进去,对于返回的结果,我们用$data变量取出我们真正感兴趣的东西,同样的,这里也存在方法名称是如何确定的问题,我们也在稍后介绍. 如果你也使用PhpEd进行PHP的开发和调试,那么从下面的调试窗口截图中,你可以很清除的看到$data和$out之间的关系. 三、解析数据 上面得到的$data中的数据是标准的XML结构的数据,所以在PHP中,我们需要创建一个XML解析器来对这个数据进行分析,代码如下:
这里的详细操作需要参考PHP函数手册中关于XML函数的那一章,这里不再赘述,一旦数据被解析成功,我们就可以进行进一步的处理,例如下面的代码就遍历该数组,然后输出,代码如下:
四、解读WSDL 上面我们留下了两个疑问:如何知道一个WebService提供的方法,以及它的参数?所有的答案都在WSDL描述中,对于本文使用的WSDL来说,我们从中截取一段来分析,由于我们是通过Soap进行调用,所以我对完整的WSDL进行了节选,只列出关于Soap调用的部分(反相显示的部分) 首先我们注意到<wsdl:message name=”ValidateZipSoapIn”>这一节,它指出了在Soap调用中,入口参数要参照ValidateZip,于是我们接着转到文件上面一点的地方,看ValidateZip方法的定义,代码如下:
很明显,ValidateZip要求一个参数,名称为ZipCode,类型为string. 同样,我们再看<wsdl:message name=”ValidateZipSoapOut”>这一节,它指出Soap调用的出口参数是ValidateZipResponse,而后者的传出参数名称是ValidateZipResult。于是,我们就解释了前两节提出的问题: •怎样找到要调用的函数? •怎样知道函数的参数、类型? •怎样得到函数的返回值? 例2,这里我们使用php5自带的类来操作 我的结构如下:在 webservice 文件夹下有如下三个文件:Personinfo.php,SoapClient.php,SoapServer.php,具体作用可以参照代码中的注释,代码如下:
|
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com