选择显示字体大小

应用nusoap构建新型的基于php的web服务


许多机构已经采用了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(&#36;str){
&#36;retval = &quot;&quot;;
 if(strlen(&#36;str) < 1) {
return new soap_fault('client','','invalid string');
 }
 for (&#36;i = 1; &#36;i <= strlen(&#36;str); &#36;i++) {
&#36;retval .= &#36;str[(strlen(&#36;str) - &#36;i)];
 }
return &#36;retval;
}

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

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

清单2:soapserver.php
<?
require_once('nusoap.php');
include('soapfunc.php');
&#36;soap = new soap_server;
&#36;soap->register('reverse');
&#36;soap->register('add2numbers');
&#36;soap->service(&#36;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');
&#36;client = new soapclient('http://localhost/soapserver.php');

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

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



为了在一个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 

  


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons