php创建一个最简单的soap服务端与客户端测试的实例

来源:互联网 发布:js 分享 编辑:程序博客网 时间:2024/05/20 19:32

因公司需求,在研究webservice时,一开始使用nusoap来作为工具。

但是弄了一个上午发现获取数据时一直连接不到服务端,可能是配置上的问题。查了info.php配置文件,应该没问题的。




听说与PHP自带soap扩展库冲突也尝试去关闭,还是没解决问题。



多方面研究后无果,看到PHP5系列自带有soap扩展库。

于是不用nusoap直接使用自带的。

先上测试代码:这是个最简单容易的ceshi

这个是服务器端的,soapserver.php

简易理解,就是把服务器端当做你客户端调用的一个api,服务器端server负责写下一个个方法封装成函数。

<?php  $soap = new SoapServer(null,array('uri'=>"http://XXXXXXXXX/"));//This uri is your SERVER ip.$soap->addFunction('minus_func');                                                 //Register the function$soap->addFunction(SOAP_FUNCTIONS_ALL);$soap->handle();function minus_func($i, $j){    $res = $i - $j;    return $res;}?> 


以下是客户端的:soapclient.php

简易理解,就是客户端这里先对服务器端地址里的东西实例化。然后再读取这里面的某个方法即某个函数。

<?php  try {    $client = new SoapClient(null,        array('location' =>"http://XXXXXXX/nusoap/nusoapService.php",'uri' => "http://XXXXXXXX/")    );    $aa = $client->minus_func(100,99);    echo $aa;} catch (SoapFault $fault){    echo "Error: ",$fault->faultcode,", string: ",$fault->faultstring;}?>

结果返回100-99=1

这是一个最简单的实例,目的是为了测试客户端与服务器端是否连接。

有一个重要的地方好像是:如果你$client = new SoapClient(NULL,$options); 即实例化地址不是wsdl的话,请记得要配置好location和uri ;

以上XXXXXX为你服务器端的原始地址。

初学者入门,请见谅。