PHP基础教程-零基础学习PHP-Web Service

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

WebService北京易第优教学管理部课程大纲WebService介绍SOAP介绍SOAP的应用什么是WebServiceWebServices可以将应用程序转换为网络应用程序。WebServices被通过Web进行发布、查找和使用。通过使用WebServices,您的应用程序可以向全世界发布信息,或提供某项功能。WebServices可以被其他应用程序使用。基本的WebServices平台是XML+HTTP。Webservices使用XML来编解码数据,并使用SOAP来传输数据。什么是WebServiceWebServices是应用程序组件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基于XMLSOAP很简单并可扩展SOAP运许您绕过防火墙SOAP将被作为W3C标准来发展SOAP消息的基本结构?xmlversion=1.0?soap:Envelopexmlns:soap=:encodingStyle=:Header....../soap:Headersoap:Body......soap:Fault....../soap:Fault/soap:Body/soap:Envelope什么是WSDLWSDL是基于XML的用于描述WebServices以及如何访问WebServices的语言。WSDL指网络服务描述语言WSDL使用XML编写WSDL是一种XML文档WSDL用于描述网络服务WSDL也可用于定位网络服务WSDL还不是W3C标准一个WSDL文档的主要结构definitionstypesdefinitionoftypes......../typesmessagedefinitionofamessage..../messageportTypedefinitionofaport......./portTypebindingdefinitionofabinding..../binding/definitions什么是UDDI?UDDI是一种目录服务,通过它,企业可注册并搜索Webservices。UDDI指通用的描述、发现以及整合(UniversalDescription,DiscoveryandIntegration)。UDDI是一种用于存储有关webservices的信息的目录。UDDI是一种由WSDL描述的网络服务接口目录。UDDI经由SOAP进行通迅。UDDI如何被使用假如行业发布了一个用于航班比率检测和预订的UDDI标准,航空公司就可以把它们的服务注册到一个UDDI目录中。然后旅行社就能够搜索这个UDDI目录以找到航空公司预订界面。当此界面被找到后,旅行社就能够立即与此服务进行通信,这样由于它使用了一套定义良好的预订界面。XML-RPCWebService就是为了异构系统的通信而产生的,它基本的思想就是使用基于XML的HTTP的远程调用提供一种标准的机制,而省去建立一种新协议的需求。目前进行WebService通信有两种协议标准,一种是XML-RPC,另外一种是SOAP。XML-RPC比较简单,出现时间比较早,SOAP比较复杂,主要是一些需要稳定、健壮、安全并且复杂交互的时候使用。PHP中集成了XML-RPC和SOAP两种协议的访问不管是XML-RPC也好,SOAP也罢,只要能够让我们稳定、安全的进行远程过程的调用,完成我们的项目,那么就算整个WebService就是成功的。WebService实例任何应用程序都可拥有WebService组件。WebServices的创建与编程语言的种类无关。安装为了公开接口,被其他的应用程序调用,经常需要创建SOAP端,而在PHP中,SOAP的使用自从PHP4就有了广泛的使用,开源的例如nosoap都是很不错的SOAP类,在PHP5开始,就已经支持SOAPphp5自带了一个开发webservice的扩展extension=php_soap.dll;在php.ini中加入上面扩展;同时配置ini文件的以下选项NameDefaultChangeableChangelogsoap.wsdl_cache_enabled1PHP_INI_ALLAvailablesincePHP5.0.0.soap.wsdl_cache_dir/tmpPHP_INI_ALLAvailablesincePHP5.0.0.soap.wsdl_cache_ttl86400PHP_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.phpfunctionGetTime(){returndate('Y-m-d',time());}然后创建一个SOAPServer可以创建于soaps.phpinclude_once('soapfunction.php');$soap=newSoapServer(null,array('uri'=));$soap-addFunction('GetTime');$soap-handle();实例说明以上代码第一行是包含了soap要执行的文件,第二行创建了一个SoapServer类,该类的第一个参数是wsdl,第二个参数是uri,php自带目前不支持自动生成wsdl,这个构造函数如果第一个参数是null,第二个是必填的,第二个参数就是命名空间,这是为了保证互联网WebServer的一致性和开发的一致性而产生的,你可以写入任何你想要的地址,无论存在与否。客户端访问可以创建soapc.php$client=newSoapClient(null,array('location'==));$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.phpclassSum{/***求和**@paramfloat$x*@paramfloat$y*@retu

1 / 33
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功