详解php soap实现web service接口服务-php教程

资源魔 32 0
web service是甚么,没有多说,可参见百科阐明web servicebaidu百科。

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来进行拜访,能够看到输入以下图所示:

5a948ab36df7014b8427db2eded86f0.png

这类形式无需天生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查看前往后果:

f79ef26adf0511d4e3c0de9dcc26120.png

三、经过阅读器,间接拜访wsdl文档的地点,能够看到wsdl文档的详细内容:

ef1120086177a027bd83f4651c92c92.png

php soap也支持各类其它的操作,例如鉴权,头设置等,这些性能若有需求,能够参阅民间文档。

以上就是详解php soap完成web service接口效劳的具体内容,更多请存眷资源魔其它相干文章!

标签: php php开发教程 php开发资料 php开发自学

抱歉,评论功能暂时关闭!