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

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

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

php soap服务器
用php和nusoap来创建soap服务器很是容易。基本上,你只要写出你想要暴露给你的web services的函数,而后用nusoap去注册它们就能够了。

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

soapfunc.phpphp

<?
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); 
}
?>

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


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);
?>

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客户端程序的源程序。浏览器

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 1Array 函数

相关文章
相关标签/搜索