十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶(hù) + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專(zhuān)業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
soap是一種協(xié)議,屬于web service實(shí)現(xiàn)所使用的一種技術(shù)規(guī)范。
web service的接口實(shí)現(xiàn)有兩種方式,一種是需要生成wsdl文檔的方式,一種是不需要生成wsdl文檔的方式。
在實(shí)際操作之前,先檢查一下自己的環(huán)境,是否支持soap,然后修改一下php.ini配置文件,將“soap.wsdl_cache_enabled”項(xiàng)設(shè)置為0。
無(wú)需生成wsdl文檔的方式
這種方式相較于需要生成wsdl文檔的方式,更簡(jiǎn)單一些,但是有一些方法并不支持,例如獲取操作方法的__getFunctions(),是否合用看自己的選擇。
server端ts1.php
'sampleA')); $ss->setClass('testA'); $ss->handle();
在server端ts1.php文件中,創(chuàng)建了一個(gè)類(lèi),然后創(chuàng)建SoapServer并做設(shè)置,uri用來(lái)確保一致性。
client端tc1.php
'http://10.0.0.232:1075/soap/ts1.php', 'uri'=>'sampleA' )); echo $client->sayHi('Taylor,Swift'); echo "
"; echo $client->add(1,2);
在client端,使用SoapClient對(duì)象來(lái)進(jìn)行請(qǐng)求,location指明請(qǐng)求的具體地址,uri的值與server端設(shè)置的一致,用來(lái)保證一致性。
在瀏覽器輸入http://10.0.0.232:1075/soap/tc1.php來(lái)進(jìn)行訪問(wèn),可以看到輸出如下圖所示:
這種方式無(wú)需生成wsdl文檔,實(shí)現(xiàn)簡(jiǎn)便,但同樣的,因?yàn)闆](méi)有wsdl文檔,client也無(wú)法獲取到相關(guān)的操作方法,而生成wsdl文檔的方式,client端就可以單獨(dú)根據(jù)一個(gè)請(qǐng)求地址來(lái)獲取到server端公開(kāi)的所有接口。
生成wsdl文檔的方式
wsdl文檔是一個(gè)xml文檔,通常可以使用公開(kāi)的類(lèi)庫(kù)SoapDiscovery來(lái)生成,我用百度網(wǎng)盤(pán)共享一下需要可以直接下載SoapDiscovery.class.php。
server端ts2.php
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先檢測(cè)了一下需要的wsdl文件是否存在,若不存在則創(chuàng)建,然后創(chuàng)建SoapServer對(duì)象并進(jìn)行設(shè)置,因?yàn)槭褂玫氖莣sdl文檔,所以new SoapServer時(shí)直接寫(xiě)入wsdl文檔的地址即可。
client端tc2.php
__getFunctions()); echo "
"; echo $client->sayHello('Avril Lavigne'); echo "
"; echo $client->add(9,8);
在client端的tc2.php文件中,創(chuàng)建SoapClient對(duì)象時(shí),直接填入的是請(qǐng)求的wsdl文檔的地址,這個(gè)文檔是由ts2.php生成的。
現(xiàn)在,server端的ts2.php與client端的tc2.php都已經(jīng)寫(xiě)好了,那么現(xiàn)在就需要請(qǐng)求一下ts2.php了,為什么請(qǐng)求它?
因?yàn)槲覀冃枰韧ㄟ^(guò)ts2.php來(lái)創(chuàng)建wsdl文件,當(dāng)然,只有在第一次的時(shí)候需要這樣做,當(dāng)wsdl文檔創(chuàng)建好之后,就不需要再這樣做了。
(如果后期修改了ts2.php,那還是需要?jiǎng)h除掉舊的wsdl文檔,然后重新請(qǐng)求一下ts2.php用來(lái)生成新的wsdl文檔。)
1、請(qǐng)求ts2.php用來(lái)生成wsdl文檔http://10.0.0.232:1075/soap/ts2.php。
2、請(qǐng)求tc2.php查看返回結(jié)果:
3、通過(guò)瀏覽器,直接訪問(wèn)wsdl文檔的地址,可以看到wsdl文檔的具體內(nèi)容:
php soap也支持各種其它的操作,例如鑒權(quán),頭設(shè)置等,這些功能如有需要,可以參閱官方文檔。
以上就是詳解php soap實(shí)現(xiàn)web service接口服務(wù)的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司其它相關(guān)文章!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。