帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > PHP编程
应用NuSoap构建新型的基于PHP的Web服务
作者:匿名 发布时间:2002-12-20 来源:www.code-labs.com
许多机构已经采用了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

  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·组件对象开发Web应用的实例分析  (2005-03-12)
 ·在ASP应用中如何限制同一表单被多  (2005-03-12)
 ·ASP检索网站指定目录文件的算法与  (2005-03-12)
 ·完整的访问统计程序(三 应用篇)  (2005-03-12)
 ·w3 upload组件实例应用1  (2005-03-12)
 ·w3 upload组件实例应用2  (2005-03-12)
 ·w3 upload组件实例应用3  (2005-03-12)
 ·chart组件在ASP中的应用  (2005-03-12)
 ·浅谈MsChart在ASP中的应用  (2005-03-12)
 ·w3 upload组件实例应用1  (2005-03-12)

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·DiscuzX2.5会员整合通行证发布
·帝国CMS 7.0版本功能建议收集
·帝国网站管理系统2012年授权购买说
·PHPWind8.7会员整合通行证发布
·[官方插件]帝国CMS-访问统计插件
·[官方插件]帝国CMS-sitemap插件
·[官方插件]帝国CMS内容页评论AJAX分
   类别最新
·Windows下集成安装Apache,PHP,MYSQ
·Mysql注入:SQL Injection with MyS
·PHP 的来龙去脉
·PHP 的功能概述
·PHP与其它CGI的比较
·PHP 的编译配置详细选项
·php.ini 配置详细选项
·如何写作PHP程序
·Hello,World
·嵌入方法
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统