soap是一种协定,属于web service完成所应用的一种技巧标准。
web service的接话柄现有两种形式,一种是需求天生wsdl文档的形式,一种是没有需求天生wsdl文档的形式。
正在实际操作以前,先反省一下本人的环境,能否支持soap,而后修正一下php.ini设置装备摆设文件,将“soap.wsdl_cache_enabled”项设置为0。
无需天生wsdl文档的形式
这类形式相较于需求天生wsdl文档的形式,更简略一些,然而有一些办法其实不支持,例如猎取操作办法的__getFunctions(),能否合用看本人的抉择。
server端ts1.php
<?php class testA{ public function sayHi($str){ return 'hi,'.$str; } public function add($a,$b){ return $a+$b; } } $ss = new SoapServer(null, array('uri'=>'sampleA')); $ss->setClass('testA'); $ss->handle();
正在server端ts1.php文件中,创立了一个类,而后创立SoapServer并做设置,uri用来确保分歧性。
client端tc1.php
<?php $client = new SoapClient(null, array( 'location'=>'http://10.0.0.232:1075/soap/ts1.php', 'uri'=>'sampleA' )); echo $client->sayHi('Taylor,Swift'); echo "<br/>"; echo $client->add(1,2);
正在client端,应用SoapClient工具来进行申请,location指明申请的详细地点,uri的值与server端设置的分歧,用来保障分歧性。
正在阅读器输出http://10.0.0.232:1075/soap/tc1.php来进行拜访,能够看到输入以下图所示:
这类形式无需天生wsdl文档,完成简捷,但一样的,由于不wsdl文档,client也无奈猎取到相干的操作办法,而天生wsdl文档的形式,client端就能够独自依据一个申请地点来猎取到server端地下的一切接口。
天生wsdl文档的形式
wsdl文档是一个xml文档,通常能够应用地下的类库SoapDiscovery来天生,我用baidu网盘同享一下需求能够间接下载SoapDiscovery.class.php。
server端ts2.php
<?php define('WSDL_FILE','ts2.wsdl'); if(!file_exists(WSDL_FILE)){ require_once('SoapDiscovery.class.php'); $sd = new SoapDiscovery('testD', 'liang'); $str = $sd->getWSDL(); file_put_contents(WSDL_FILE, $str); } $ss = new SoapServer(WSDL_FILE); $ss->setClass('testD'); $ss->handle(); class testD{ public function sayHello($world){ return 'hello,'.$world; } public function add($a, $b){ return $a+$b; } }
server真个ts2.php先检测了一下需求的wsdl文件能否存正在,若没有存正在则创立,而后创立SoapServer工具并进行设置,由于应用的是wsdl文档,以是new SoapServer时间接写入wsdl文档的地点便可。
client端tc2.php
<?php $client = new SoapClient('http://10.0.0.232:1075/soap/ts2.wsdl'); print_r($client->__getFunctions()); echo "<br/>"; echo $client->sayHello('Avril Lavigne'); echo "<br/>"; echo $client->add(9,8);
正在client真个tc2.php文件中,创立SoapClient工具时,间接填入的是申请的wsdl文档的地点,这个文档是由ts2.php天生的。
如今,server真个ts2.php与client真个tc2.php都曾经写好了,那末如今就需求申请一下ts2.php了,为何申请它?
由于咱们需求先经过ts2.php来创立wsdl文件,当然,只有正在第一次的时分需求这样做,当wsdl文档创立好之后,就没有需求再这样做了。
(假如前期修正了ts2.php,那仍是需求删除了掉旧的wsdl文档,而后从新申请一下ts2.php用来天生新的wsdl文档。)
一、申请ts2.php用来天生wsdl文档http://10.0.0.232:1075/soap/ts2.php。
二、申请tc2.php查看前往后果:
三、经过阅读器,间接拜访wsdl文档的地点,能够看到wsdl文档的详细内容:
php soap也支持各类其它的操作,例如鉴权,头设置等,这些性能若有需求,能够参阅民间文档。
以上就是详解php soap完成web service接口效劳的具体内容,更多请存眷资源魔其它相干文章!
标签: php php开发教程 php开发资料 php开发自学
抱歉,评论功能暂时关闭!