利用NuSoap开发WebService(PHP)

来源:互联网 发布:怎么开放端口号 编辑:程序博客网 时间:2024/05/22 18:29

NuSoap是PHP环境下的WebService编程工具,用于创建或调用WebService,是一个开源软件。它完全采用PHP语言编写、通过HTTP收发SOAP消息的一系列PHP类,由NuSphere Corporation(http://www.nusphere.com/)开发。 它的优势是不需要扩展库的支持,这种特性使它可用于所有的PHP环境,不受服务器安全设置的影响。

1.首先,去http://sourceforge.net/projects/nusoap/下载nusoap-0.9.5.zip,解压后把lib文件夹放到与你的WebService程序相同的目录,如/WebService/lib。

2.服务端:建立nusoapService.php文件。

<?php    require_once("lib/nusoap.php");    $server = new soap_server;    //避免乱码    $server->soap_defencoding = 'UTF-8';    $server->decode_utf8 = false;    $server->xml_encoding = 'UTF-8';    $server->configureWSDL('sayHello');//打开wsdl支持    /*       注册需要被客户端访问的程序       类型对应值:bool->"xsd:boolean"   string->"xsd:string"                 int->"xsd:int"    float->"xsd:float"    */    $server->register( 'sayHello',    //方法名    array("name"=>"xsd:string"),    //参数,默认为"xsd:string"    array("return"=>"xsd:string") );//返回值,默认为"xsd:string"    //isset 检测变量是否设置    $HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';    //service 处理客户端输入的数据    $server->service($HTTP_RAW_POST_DATA);    /**     * 供调用的方法     * @param $name     */    function sayHello($name) {       return "Hello, {$name}!";    }?>

注:
1.文件代码不能有任何输出,否则调用时会报类似如下错误:
XML error parsing SOAP payload on line x(行号): Reserved XML Name
2.要以UTF-8 无BOM格式保存,不然客户端调用会出错。

3.客户端:建立nusoapClient.php文件。

<?php    require_once("lib/nusoap.php");    /*       通过WSDL调用WebService       参数1 WSDL文件的地址(问号后的wsdl不能为大写)       参数2 指定是否使用WSDL         $client = new soapclient('http://localhost/WebService/nusoapService.php?wsdl',true);       */    $client = new soapclient('http://localhost/WebService/nusoapService.php');    $client->soap_defencoding = 'UTF-8';    $client->decode_utf8 = false;    $client->xml_encoding = 'UTF-8';    //参数转为数组形式传递    $paras=array('name'=>'Bruce Lee');    //目标方法没有参数时,可省略后面的参数    $result=$client->call('sayHello',$paras);    //检查错误,获取返回值    if (!$err=$client->getError()) { echo "返回结果:",$result;  }    else { echo "调用出错:",$err; }?>

注:用nusoap实现WebService,不要开启php的SOAP扩展利用NuSoap开发WebService(PHP)

0 0
原创粉丝点击