动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
  
   PHP → 阅读文章

 应用NuSoap构建新型的基于PHP的Web服务

作者来源: 
阅读 2084 人次 , 2006-3-29 4:16:00 


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

一个例子便能说明一切,让我们先看一个例子

为了说明如何应用nusoap和php来构建web services,我们将举一个简单的例子。这个例子应用程序由一个php web services的服务器端和客户端组成。他将实现两个功能:颠倒一个字符串字符的顺序,求两个数的和。

php soap服务器
用php和nusoap来建立soap服务器非常容易。基本上,你只要写出你想要暴露给你的web services的函数,然后用nusoap去注册它们就可以了。

ok,另外还需要两步才能完成php soap服务器的建立。首先你还要在你的php代码中创建nusoap对象的一个实例,然后用http post方法将原始数据传给nusoap进行处理。听起来简单吧。先看看清单1。

清单1:soapfunc.php
<?
require_once('nusoap.php');
function reverse($str){
$retval = "";
 if(strlen($str) < 1) {
return new soap_fault('client','','invalid string');
 }
 for ($i = 1; $i <= strlen($str); $i++) {
$retval .= $str[(strlen($str) - $i)];
 }
return $retval;
}

function add2numbers($num1, $num2) {
 if (trim($num1) != intval($num1)) {
return new soap_fault('client', '', 'the  first number is invalid');
}
if (trim($num2) != intval($num2)) {
return new soap_fault('client', '', 'the second number is invalid');
}
return ($num1 + $num2);
}
?>

清单1给出了soapfunc.php的源文件。这个文件包含了我们想通过soap协议暴露给web services的两个函数:reverse和add2numbers,它们是我们这个web services 应用的核心。函数reverse带一个参数,颠倒字符串中的字符的顺序,然后返回。

清单2:soapserver.php
<?
require_once('nusoap.php');
include('soapfunc.php');
$soap = new soap_server;
$soap->register('reverse');
$soap->register('add2numbers');
$soap->service($http_raw_post_data);
?>

清单2举例说明了nusoap注册函数和调用soap处理程序的用法。你看到了,注册你的两个函数(在soapfunc.php中)、传递post数据给soap_server对象,就跟创建一个新的soap_server对象实例一样的简单。soap_server对象将要检查post数据并确定将调用哪个函数,然后向这个php函数传递参数。从php函数返回的数据被重新包装为soap响应并传送给请求服务的soap客户端。

php soap客户端
现在我们已经利用nusoap和php创建了一个soap服务器,我们需要对它进行测试。像我们建立soap服务器程序一样,我们可以在php中利用nusoap再建立一个soap的客户端程序。清单3给出了php soap客户端程序的源程序。

现在我们已经利用nusoap和php创建了一个soap服务器,我们需要对它进行测试。像我们建立soap服务器程序一样,我们可以在php中利用nusoap再建立一个soap的客户端程序。清单3给出了php soap客户端程序的源程序。

清单3:soapclient.php
<?
include('nusoap.php');
$client = new soapclient('http://localhost/soapserver.php');

$str = "this string will be reversed";
$params1 = array('str'=>$str);
$reversed = $client->call('reverse',$params1);
echo "if you reverse '$str', you get '$reversed'<br>\n";

$n1 = 5;
$n2 = 14;
$params2 = array('num1'=>$n1, 'num2'=>$n2);
$added = $client->call('add2numbers', $params2);
echo "if you add $n1 and $n2 you get $added<br>\n";
?>



为了在一个soap服务器上能使用php客户端程序,你还得做三件事情。第一,你要创建一个soapclient对象。soapclient对象负责处理参数的编组和soap协议。soapclient需要一个必须是url的参数。这个url可以指向一个实际soap服务器的http终端或者一个wsdl描述。在我们这个例子里,它是指向我们的php soap服务器的一个url。

当调用需要参数的函数时,你需要先创建一个参数数组,数组包括一组键-值(key-value)对。键(key)是参数的名字,值(value)是参数的值。

当需要调用函数时,你就用soapclient对象去调用,并且传入两个参数。第一个参数是你要调用的函数的名字,第二个参数是包含soap函数所带参数的一个数组,主调函数将会返回你调用的soap函数的值。

要运行这个例子,只要简单的在web浏览器中输入soapclient.php的url。你将类似以下的输出:

if you reverse 'this string will be reversed', you get 'desrever eb lliw gnirts siht' if you add 5 and 14 you get 19 

 本文Tagssoap  
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:linux下安装oracle和php环境
· 下一篇:关于register_globals设置的问题
· session设置说明
· php:用序列化或session对象让oo进行到底
· HTML to XHTML Converter
· pwin98下php安装调试又一例
· PHP实现分页的一个示例


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077