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

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

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

时间: 2024-10-01 23:42:52

应用NuSoap构建新型的基于PHP的Web服务的相关文章

基于 REST 的 Web 服务:基础

基础 REST 定义了一组体系架构原则,您可以根据这些原则设计以系统资源为中心的 Web 服务,包括使用不同语言编写的客户端如何通过 HTTP 处理和传输资源状态. 如果考虑使用它的 Web 服务的数量,REST 近年来已经成为最主要的 Web 服务设计模型. 事实上,REST 对 Web 的影响非常大,由于其使用相当方便,已经普遍地取代了基于 SOAP 和 WSDL 的接口设计. REST 这个概念于 2000 年由 Roy Fielding 在就读加州大学欧文分校期间在学术论文“Archit

基于Socket创建Web服务

基于Socket创建Web服务 为什么要使用Socket呢,我们来看下图 Socket原理图回顾: -------------------编写SocketService,完成字母小写转大写功能----------------------------- ServerSocket服务器端代码如下: public static void main(String[] args) throws IOException { // 1:建立服务器端的tcp socket服务,必须监听一个端口 ServerSo

建立基于https的web服务

先安装openssl [[email protected] ~]# yum install openssl 搭建私有CA服务器 修改openssl.cnf配置文件 [[email protected] ~]# vim /etc/pki/tls/openssl.cnf dir=/etc/pki/CA 创建相关的文件 [[email protected] ~]# cd /etc/pki/CA [[email protected] ~]# makdir certs newcerts crl [[ema

Spring boot构建基于rest的Web服务

一.介绍:使用Spring Boot我们可以很容易的创建一个可独立运行的Rest web服务,其中内嵌tomact,我们只需“run”就可以查看效果了. Spring Boot利用Gradle或Maven构建引入第三方库的方式,所以我么不需要去担心我们改引入哪些库,而且使用Spring Boot省去了很多繁琐的配置. 接下来,我们将用Spring Boot实现和c# mvc一样的Rest Web服务. 二.效果:经典的Hello World. 这将是我么最终的效果,毋须配置部署tomact,我们

基于uwsgi的Web服务路由功能升级

手上一个基于uwsgi开发的后台服务,接收GET请求,使用QUERY_STRING作为参数. 最开始的时候,路由功能使用的是if else的结构,大致如下 path = env["PATH_INFO"] param = parse_query_string(env["QUERY_STRING"]) if path == "foo1/bar1": fooBar1(param) elif path == "foo2/bar2":

spring-cloud 构建一个restful的web服务

构建一个restful的web服务 这篇文章告诉你如何通过spring创建一个"hello world"的restful的web服务 你会建立什么 你会建立一个接受HTTP GET请求的服务: http://localhost:8080/greeting 问候语以JSON的形式响应: {"id":1,"content":"Hello, World!"} 你可以自定义问候语与一个可选 name 参数的查询字符串: http://

使用 ServiceStack 构建跨平台 Web 服务(转)

出处:http://www.cnblogs.com/shanyou/p/3348347.html 本文主要来自MSDN杂志<Building Cross-Platform Web Services with ServiceStack>,Windows Communication Foundation (WCF) 是一个相当优秀的服务框架,当我们讨论跨平台的服务的时候,虽然WCF对WebService的支持还行,在面对一些高级应用的不太好,微软重新发展了ASP.NET WebAPI框架,关于这两

.net/java调用NuSOAP构建的Web服务

此文主要解决php下的web服务接受和返回复杂类型(自定义类型)该如何构建以及其他程序客户端如何来调用. 第一步:用NuSOAP组件来构建基于php的webservice 下载NuSOAP组件,在创建基于php的webservice时需要引用,代码如下,很简单直观,有注释就不多解释了: <?php require_once ('lib/nusoap.php'); // 返回的是一个数组 function adduser ($userName, $userAge, $birthday, $high

SQL Server虚拟化系列(3)&mdash;&mdash;构建理想的基于VMware的SQL Server虚拟机

虚拟化变得越来越常见,并且在不了解虚拟化如何工作的情况下,DBA在尝试解决性能问题时会出现盲点,例如减少资源争用或改进备份和恢复操作等. 在本文中我们将主要讲述为您的SQL Server工作负载构建理想的基于VMware的虚拟机.我们的下一篇文章将介绍怎么样在Hyper-V上构建对应的SQL Server虚拟化环境. 现在,作为DBA,您可能没有访问权限来创建用于SQL Server的新虚拟机.这些操作可以交给您的VM管理员,他们将为您部署合适的VM环境. 以下详细信息适用于在Windows S