码迷,mamicode.com
首页 > Web开发 > 详细

NuSOAP简介 php中使用webservice

时间:2014-07-16 23:23:37      阅读:333      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   java   color   使用   

许多机构已经采用了Apach和PHP作为他们的Web应用环境。在Web services模式中采用PHP可能看上去可能会比较难。但是事实上,搭配NuSoap,你可以轻松的应用PHP构建SOAP的客户端和服务器端。 

 
PHP SOAP服务器 
 用PHP和NuSoap来建立SOAP服务器非常容易。基本上,你只要写出你想要暴露给你的Web services的函数,然后用NuSoap去注册它们就可以了。OK,另外还需要两步才能完成PHP SOAP服务器的建立。首先你还要在你的PHP代码中创建NuSoap对象的一个实例,然后用HTTP POST方法将原始数据传给NuSoap进行处理 
NuSOAP的使用比较简单,其中最常用到的类是soap_server和soapclient, 其中soap_server用于创建 Webservice服务,类soapclient则用于调用Webservice  .这两个类的定义都在lib/nusoap.php中,因此我们在创建 或调用Webservice接口程序时均需要引用该文件. 

 
NuSoap是PHP环境下的WebService编程工具,用于创建或调用WebService。它是一个开源软件,是完全采用PHP语言编写的、通过HTTP收发SOAP消息的一系列PHP类,由NuSphere Corporation(http://dietrich.ganx4.com/nusoap/   )开发。NuSOAP的一个优势是不需要扩展库的支持,这种特性使得NuSoap可以用于所有的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 } !"; } ?>

 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 扩展   
  
  文件代码不能有任何输出  ,  否则调用时会报类似如下错误:    
 XML error parsing SOAP payload on line x(  行号  ): Reserved XML Name  

 

NuSOAP简介 php中使用webservice,布布扣,bubuko.com

NuSOAP简介 php中使用webservice

标签:style   blog   http   java   color   使用   

原文地址:http://www.cnblogs.com/syphper/p/3811251.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!