php中soap 的利用实例无需手写WSDL文件,提供自动生成WSDL文件类

最近事情的内容利用到了接口!
对付系统接口:
现下打仗的有两种!

1、URL范例的接口

URL路由带参数式的接口!这个很好做!只要有过Web开拓履历的人都能完成!
这种接口数据不足隐蔽性,可以直接在欣赏个中看到,

如付出宝的生意业务请求URL。需要加一个MD5签名,和处事器端的再次向付出宝处事器发送验证!
固然soap方法通报的数据隐蔽性很好!但为了数据安详,不免也需要举办数据签名。

2、SOAP范例的接口

无关编程语言、无关平台、扩展性很好

要实现一个SOAP 型的接口,有两种方法:一种有WSDL文件方法、一中无WSDL文件方法!


对付热爱研究型的人来说,利用第一种方法可以让你清楚的相识PHP是怎么建设了一个Web Service!
但第一种对付新手来说,建设一个XML名目标WSDL文件,是较量难的,这你的先相识熟悉什么是XML!
学会XML语法!
  但对付一个急于办理问题的人来说!没有这么多的时间去熟悉!所以这是件烦恼的事!
不外不急,上面说了,尚有一种无需WSDL文件的方法!并且,本讲授还提供了一个自动生成WSDL文件的类!

讲授前,先设置下PHP的soap情况支持:

找到php.ini文件
;extension=php_soap.dll

删除去";" ,重启apache处事器

 

一、有WSDL文件方法
    在这里先先容尺度的webservice。 
那么如何建设wsdl呢?对付PHP来说这确实是件很不容易的工作,有人说用zend studio建设很利便,这是一种要领。但对付那些不喜欢用zend studio的人来说,会以为建设一个web service还要安装zend studio,太强人所难了。
    在这里先容一个简朴的要领,到网上下载SoapDiscovery.class.php类,内里有个公用要领:getWSDL,这个要领末端是用的return,那么,你修改一下这个要领: 
//return sprintf('%s%s%s%s%s%s', $headerWSDL, $portTypeWSDL, $bindingWSDL, $serviceWSDL, $messageWSDL, '</definitions>'); 
//生成wsdl文件,将上面的return注释 
$fso = fopen($this->class_name . ".wsdl" , "w"); 
fwrite($fso, sprintf('%s%s%s%s%s%s', $headerWSDL, $portTypeWSDL, $bindingWSDL, $serviceWSDL, $messageWSDL, '</definitions>')); 
此刻生成wsdl的类有了,SoapDiscovery.class.php(源码在最末端)。

     再筹备一个提供处事的Service.php类文件可能函数就可以建设wsdl了!

<?php class Service { public function HelloWorld() { return "Hello"; } public function Add($a, $b) { return $a + $b; } } ?>

  建设wsdl文件的creat_wsdl.php

<?php include("Service.php"); include("SoapDiscovery.class.php"); $disco = new SoapDiscovery('Service', 'soap'); //第一个参数是类名(生成的wsdl文件就是以它来定名的),即Service类,第二个参数是处事的名字(这个可以随便写)。 $disco->getWSDL();

  运行create_wsdl.php文件,此时会生成一个Service.wsdl的文件



  再在Service.php文件中添加一些代码

<?php class Service { public function HelloWorld() { return "Hello"; } public function Add($a, $b) { return $a + $b; } } $server = new SoapServer('Service.wsdl', array('soap_version' => SOAP_1_2)); $server->setClass("Service"); //注册Service类的所有要领 $server->handle(); //处理惩罚请求 ?>

  建设webservice客户端措施,测试webservice是否有效,文件名是:client.php 
将以下内容拷贝进去:

  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/8277.html