原文:利用PHP SOAP扩展实现简单Web Services

WebServices能干什么?

WebServices 可以将应用程序转换为网络应用程序。

通过使用 WebServices,您的应用程序可以向全世界发布信息,或提供某项功能。

好了,关于WebServices网上资料很多,就不过多介绍了,直接进入主题。

PHP有两个扩展类库可以实现WebServices,一个是NuSoap,一个是php官方自带的Soap扩展,在使用上大致都差不多,就拿官方自带的Soap扩展来说吧。

在Soap编写WebServices中主要用到了SoapClient,SoapServer,SoapFault三个类。

SoapClient:用户访问的类,也就是客户端,使用WebServices的类

SoapServer:提供WebServices类,服务端

SoapFault:异常处理类

作为示例,写个超级简单的的WebServices来感受下吧,直接代码说话

1、Myself.class.php  --业务逻辑类,功能实现类

1 <?php
2 //业务逻辑类
3 class Myself{
4 public function info(){
5 return "新浪微博:Balla_兔子,求关注啦~";
6 }
7 }
8 ?>

很简单,无需多余解释,返回一个字符串。

2、soapServer.php  --服务端类,提供服务

 1 <?php
2 //服务端
3 require_once('Myself.class.php');
4 $parameter=array(
5 'uri'=>'http://localhost/',
6 'location'=>'http://localhost/soap/soapServer.php'
7 );
8 $soapServer=new SoapServer(null,$parameter);
9 $soapServer->setClass('Myself');
10 $soapServer->handle();
11 ?>

SoapServer有两种操作模式:

上面举例的是non-WSDL模式,在实例化SoapServer类时,一个参数是放WSDL文件,在non-WSDL模式里,可以为空,把配置参数以数组的形式写在第二个参数。

如果用的是WSDL模式,可以直接用WSDL文件让服务器读取配置参数,此时可以省略第二个数组参数。

配置参数有许多,上面为简单举例只列出2个,具体大家可以在网上查查

uri  --命名空间

location  --服务地址

1、WSDL模式  在WSDL模式中,构造器可以使用WSDL文件名作为参数,并从WSDL中提取服务所使用的信息。

2、non-WSDL模式  在non-WSDL模式中,使用参数来传递要使用的信息,用来管理服务的行为。

在SoapServer类的众多方法中,有三个方法比较重要。它们是SoapServer::setClass()、SoapServer::addFunction()、SoapServer::handle()。

特别注意,在handle方法之前之后均不能输出任何参数,否则会出错。

3、soapClient.php  --客户端类,使用服务

 1 <?php
2 //客户端
3 $parameter=array(
4 'uri'=>'http://localhost/',
5 'location'=>'http://localhost/soap/soapServer.php'
6 );
7 try{
8 $soapClient=new SoapClient(null,$parameter);
9 echo $soapClient->info();
10
11 }catch(Exception $e){
12 echo $e->getMessage();
13 }
14
15 ?>

SoapClient类可以作为给定WebServices的客户端。
它有两种操作形式:(和SoapServer的两种模式差不多)
1、WSDL 模式

2、Non-WSDL 模式

以上就是利用PHP SOAP扩展实现的简单WebServices,我们访问soapClient.php试试看

轻松搞定~

附:

现在大多的WebServices接口的返回值是JSON或XML,我们可以在内部自己定义赋值。

常用函数 file_get_contents、json_encode、json_decode等

这里有篇关于json操作时该注意的事项:http://www.cnblogs.com/lichenwei/p/3888586.html

利用PHP SOAP扩展实现简单Web Services的更多相关文章

  1. 利用WSCF进行契约先行的Web Services开发

    http://www.cnblogs.com/goody9807/archive/2007/06/05/772107.html 什么是契约先行(Contract-First)? 如果说一个新的软件开发 ...

  2. Using MS Soap toolkit to generate web services .md

    Different SOAP encoding styles - RPC, RPC-literal, and document-literal SOAP Remote Procedure Call(R ...

  3. Web Services简单介绍

    Web Services简单介绍 Web Services入门 一.Web Services简介 1.什么是Web Services? Web Services 是应用程序组件 Web Service ...

  4. Web Services 平台元素

    Web Services 拥有三种基本的元素:SOAP.WSDL 以及 UDDI. 什么是 SOAP? 基本的 Web services 平台是 XML + HTTP. SOAP 指简易对象访问协议 ...

  5. Web Services 教程

    Web Services 可使您的应用程序成为 Web 应用程序. Web Services 通过 Web 进行发布.查找和使用. Web Services 是应用程序组件 Web Services  ...

  6. 跟我一起学WCF(3)——利用Web Services开发分布式应用

    一.引言 在前面文章中分别介绍了MSMQ和.NET Remoting技术,今天继续分享.NET 平台下另一种分布式技术——Web Services 二.Web Services 详细介绍 2.1 We ...

  7. Web Services 平台元素SOAP、WSDL 、UDDI

    Web Services 拥有三种基本的元素:SOAP.WSDL 以及 UDDI. 什么是 SOAP? SOAP 是一种使应用程序有能力通过 HTTP 交换信息的基于 XML 的简易协议.或者可以更简 ...

  8. 利用Web Services开发分布式应用

    一.引言 在前面文章中分别介绍了MSMQ和.NET Remoting技术,今天继续分享.NET 平台下另一种分布式技术——Web Services 二.Web Services 详细介绍 2.1 We ...

  9. web services + soap + wsdl 学习

    什么是web services? 应用程序组件: 使用开放协议进行通信: 独立(self - contained )并可自我描述: 可通过使用UDDI来发现: 可被其他应用程序使用: XML是Web ...

随机推荐

  1. SuperSocket源码解析之配置系统

    一 继承Net配置系统 Net应用程序配置机制跟程序集引用大致类似,均具有继承性,如iis几乎每个应用程序都会有一个Web.config,比如我们使用vs2012以上版本创建一个web应用程序会自带一 ...

  2. 新鲜出炉的Using Qt 3D to visualize music

    http://blog.qt.io/blog/2016/01/27/using-qt-3d-visualize-music/

  3. JVM调优总结(五)-分代垃圾回收详述1

    为什么要分代 分代的垃圾回收策略,是基于这样一个事实:不同的对象的生命周期是不一样的.因此,不同生命周期的对象可以采取不同的收集方式,以便提高回收效率. 在Java程序运行的过程中,会产生大量的对象, ...

  4. AV_百度百科

    AV_百度百科 AV(影片门类)

  5. elasticsearch的javaAPI之query

    elasticsearch的javaAPI之query API the Search API同意运行一个搜索查询,返回一个与查询匹配的结果(hits). 它能够在跨一个或多个index上运行, 或者一 ...

  6. PHP:根据IP地址获取所在城市

    文件目录: ipLocation -----qqwry ----------QQWry.Dat -----ipCity.class.php ipCity.class.php文件代码: <?php ...

  7. “/” 应用程序中的服务器错误 - IIS 发布错误

    解决方法, 将bin目录下的全部文件复制到iis下

  8. 使用开源的PullToRefreshScrollView scrollTo和scrollby遇到的问题

    在项目中使用了开源的com.handmark.pulltorefresh.library 下拉刷新组件,当中使用了PullToRefreshScrollView ,须要调用scrollTo或者scro ...

  9. 安装windows7导致Ubuntu启动项消失的问题的解决

    系统原来是Ubuntu14,前两天安装win7后,启动直接是win7.也就是Ubuntu的启动项消失了. 在windows下尝试非常多方法,都以失败告终,最后选择Ubuntu下boot-repair软 ...

  10. 基于visual Studio2013解决C语言竞赛题之1064互质数差1验证

       题目 解决代码及点评 /* 64. 任意两个互质的自然数, 经过若干次加减后,总可获得结果为1的数值. 所谓互质数(即互素的数),是指这两个数除 1外再没有其它公因数. 如14,9为 ...