PHP教程课件讲义:Web Service_第1页
PHP教程课件讲义:Web Service_第2页
PHP教程课件讲义:Web Service_第3页
PHP教程课件讲义:Web Service_第4页
PHP教程课件讲义:Web Service_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

WebService课程大纲WebService介绍SOAP介绍SOAP的应用什么是WebServiceWebServices可以将应用程序转换为网络应用程序。WebServices被通过Web进行发布、查找和使用。通过使用WebServices,您的应用程序可以向全世界发布信息,或提供某项功能。WebServices可以被其他应用程序使用。基本的WebServices平台是XML+HTTP。Webservices使用XML来编解码数据,并使用SOAP来传输数据。什么是WebServiceWebServices是应用程序组件WebServices使用开放协议进行通信WebServices是独立的(self-contained)并可自我描述WebServices可通过使用UDDI来发现WebServices可被其他应用程序使用XML是WebServices的基础WebService如何工作

基础的WebServices平台是XML+HTTP。HTTP协议是最常用的因特网协议。XML提供了一种可被用于不同的平台和编程语言之间的语言。Webservices平台的三种元素:SOAP(简易对象访问协议)UDDI(通用描述、发现及整合)WSDL(Webservices描述语言)可重复使用的应用程序组件有一些功能是不同的应用程序常常会用到的。那么为什么要周而复始地开发它们呢?Webservices可以把应用程序组件作为服务来提供,比如汇率转换、天气预报或者甚至是语言翻译等等。比较理想的情况是,每种应用程序组件只有一个最优秀的版本,这样任何人都可以在其应用程序中使用它。连接现有的软件通过为不同的应用程序提供一种链接其数据的途径,Webservices有助于解决协同工作的问题。通过使用Webservices,您可以在不同的应用和不同的平台之间来交换数据。什么是SOAP?SOAP指简易对象访问协议或者可以更简单地说:SOAP是一种用于访问webservice的协议。SOAP是一种通信协议SOAP用于应用程序之间的通信SOAP是一种用于发送消息的格式SOAP被设计用来通过因特网进行通信SOAP独立于平台SOAP独立于语言SOAP基于XMLSOAP很简单并可扩展SOAP运许您绕过防火墙SOAP将被作为W3C标准来发展SOAP消息的基本结构<?xmlversion="1.0"?><soap:Envelopexmlns:soap="/2001/12/soap-envelope"soap:encodingStyle="/2001/12/soap-encoding"><soap:Header>......</soap:Header><soap:Body>......<soap:Fault>......</soap:Fault></soap:Body></soap:Envelope>什么是WSDL

WSDL是基于XML的用于描述WebServices以及如何访问WebServices的语言。WSDL指网络服务描述语言WSDL使用XML编写WSDL是一种XML文档WSDL用于描述网络服务WSDL也可用于定位网络服务WSDL还不是W3C标准一个WSDL文档的主要结构<definitions><types>definitionoftypes........</types><message>definitionofamessage....</message><portType>definitionofaport.......</portType><binding>definitionofabinding....</binding></definitions>什么是UDDI?UDDI是一种目录服务,通过它,企业可注册并搜索Webservices。UDDI指通用的描述、发现以及整合(UniversalDescription,DiscoveryandIntegration)。UDDI是一种用于存储有关webservices的信息的目录。UDDI是一种由WSDL描述的网络服务接口目录。UDDI经由SOAP进行通迅。UDDI如何被使用假如行业发布了一个用于航班比率检测和预订的UDDI标准,航空公司就可以把它们的服务注册到一个UDDI目录中。然后旅行社就能够搜索这个UDDI目录以找到航空公司预订界面。当此界面被找到后,旅行社就能够立即与此服务进行通信,这样由于它使用了一套定义良好的预订界面。XML-RPCWeb

Service就是为了异构系统的通信而产生的,它基本的思想就是使用基于XML的HTTP的远程调用提供一种标准的机制,而省去建立一种新协议的需求。目前进行Web

Service通信有两种协议标准,一种是XML-RPC,另外一种是SOAP。XML-RPC比较简单,出现时间比较早,SOAP比较复杂,主要是一些需要稳定、健壮、安全并且复杂交互的时候使用。

PHP中集成了XML-RPC和SOAP两种协议的访问

不管是XML-RPC也好,SOAP也罢,只要能够让我们稳定、安全的进行远程过程的调用,完成我们的项目,那么就算整个Web

Service就是成功的。WebService实例任何应用程序都可拥有WebService组件。WebServices的创建与编程语言的种类无关。安装为了公开接口,被其他的应用程序调用,经常需要创建SOAP端,而在PHP中,SOAP的使用自从PHP4就有了广泛的使用,开源的例如nosoap都是很不错的SOAP类,在PHP5开始,就已经支持SOAPphp5自带了一个开发webservice的扩展extension=php_soap.dll;

在php.ini中加入上面扩展;同时配置ini文件的以下选项

Name

DefaultChangeable

Changelog

soap.wsdl_cache_enabled

"1"

PHP_INI_ALLAvailablesincePHP5.0.0.

soap.wsdl_cache_dir

"/tmp"

PHP_INI_ALLAvailablesincePHP5.0.0.

soap.wsdl_cache_ttl

"86400"

PHP_INI_ALLAvailablesincePHP5.0.0.

在phpinfo()中可以看到SOAP扩展。

扩展中的类这个扩展实现了6个类。其中有三个高级的类,它们的方法很有用,它们是SoapClient,SoapServer和SoapFault。另外三个类除了构造器外没有其它别的方法,这三个是低级的类,它们是SoapHeader,SoapParam和SoapVar。

SoapClient类

这个类用来使用Webservices。SoapClient类可以作为给定Webservices的客户端。它有两种操作形式:WSDL模式

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

non-WSDL模式中使用参数来传递要使用的信息。这个类有许多可以用来使用服务的有用的方法。其中SoapClient::__soapCall()是最重要的。这个方法可以用来调用服务中的某个操作。SoapServer类

这个类可以用来提供Webservices。与SoapClient类似,SoapServer也有两种操作模式:WSDL模式和non-WSDL模式。这两种模式的意义跟SoapClient的两种模式一样。在WSDL模式中,服务实现了WSDL提供的接口;在non-WSDL模式中,参数被用来管理服务的行为。在SoapServer类的众多方法中,有三个方法比较重要。SoapServer::setClass()方法设定用来实现WebService的类。SoapServer::setClass所设定的类中的所有公共方法将成为WebServices的操作SoapServer::addFunction()方法用来添加一个或多个作为WebServices操作的函数。SoapServer::handle()方法指示WebService脚本开始处理进入的请求。WebService脚本是用PHP脚本写的一个或多个SoapServer对象的实例。尽管你可以有不止一个的SoapServer对象,但通常的习惯是一个脚本只拥有一个SoapServer实例。在调用SoapServer::handle()方法之前,WebService脚本会使用设置在SoapServer对象实例上的任何信息来处理进入的请求和输出的相应。SoapFault类这个类从Exception类继承而来,可以用来处理错误。SoapFault实例可以抛出或获取Soap错误的相关信息并按程序员的请求处理。SoapHeader类

这个类可以用来描述SOAPheaders。它只是一个只包含构造器方法的数据容器。SoapParam类

SoapParam也是一个只包含构造器方法的数据容器。这个方法可以用来描述传递给Webservices操作的参数。在non-WSDL模式中这是一个很有用的类,可以用来传递所期望格式的参数信息。SoapVar类

SoapVar也是一个只包含构造器的低级类,与SoapHeader和SoapParam类相似。这个类可以用来给一个Webservices操作传递编码参数。这个类对non-WSDL中传递类型信息是非常有用的。SOAP的使用

1:创建您需要真正执行的程序,返回为一函数2.然后创建一个SOAPServer

3.客户端访问不使用WSDL的实例例如需要查询当前的时间,我们创建获取目前时间的函数可创建保存在soapfunction.php functionGetTime(){

returndate('Y-m-d',time());

}

然后创建一个SOAPServer可以创建于soaps.php

include_once('soapfunction.php');

$soap=newSoapServer(null,array('uri'=>"/webs/"));

$soap->addFunction('GetTime');

$soap->handle();实例说明

以上代码第一行是包含了soap要执行的文件,第二行创建了一个SoapServer类,该类的第一个参数是wsdl,第二个参数是uri,php自带目前不支持自动生成wsdl,这个构造函数如果第一个参数是null,第二个是必填的,第二个参数就是命名空间,这是为了保证互联网WebServer的一致性和开发的一致性而产生的,你可以写入任何你想要的地址,无论存在与否。

客户端访问

可以创建soapc.php

$client=newSoapClient(null,array('location'=>"http://localhost/soap/soaps.php",'uri'=>"/webs/"));

$reversed=$client->GetTime();

echo"获取到时间是:".$reversed;实例说明

这里第一行市创建一个SoapClent,第一个参数还是wsdl,这里为null,第二个参数中必须包含命名空间(uri),这两个参数都要和需要访问的SoapServer一致,而执行地址(location)为SoapServer的php访问地址。

访问soapc.php,将返回(类似):

获取到时间是:2008-04-08

到此,一个简单的SOAP传递结束了。基于WSDL的实例玩SOAP,最麻烦的莫过于WSDL的编写因为SoapServer还没有提供生成wsdl的实现,但是不需要人写的。我们先定义一个类文件sum.php

classSum

{

/**

*求和

*

*@paramfloat$x

*@paramfloat$y

*@returnfloat

*/

publicfunctionadd($x,$y)

{

return$x+$y;

}

}创建WSDL这

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论