您的位置:首页 > 编程语言 > PHP开发

php nusoap 创建和调用webservice

2015-08-14 16:55 621 查看
原文:http://blog.csdn.net/painstaker/article/details/5870515


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扩展
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  php soap webservice