利用NuSoap开发WebService(PHP)

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 不能为大写 )
       
参数 指定是否使用 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,webservice,扩展)