快速业务通道

NuSOAP构建基于PHP的SOAP服务

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-26

许多机构已经采用了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

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号