站長資訊網
        最全最豐富的資訊網站

        詳解php soap實現web service接口服務

        web service是什么,不多說,可參見百科說明web service百度百科。

        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來進行訪問,可以看到輸出如下圖所示:

        詳解php soap實現web service接口服務

        這種方式無需生成wsdl文檔,實現簡便,但同樣的,因為沒有wsdl文檔,client也無法獲取到相關的操作方法,而生成wsdl文檔的方式,client端就可以單獨根據一個請求地址來獲取到server端公開的所有接口。

        生成wsdl文檔的方式

        wsdl文檔是一個xml文檔,通常可以使用公開的類庫SoapDiscovery來生成,我用百度網盤共享一下需要可以直接下載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文檔。)

        1、請求ts2.php用來生成wsdl文檔http://10.0.0.232:1075/soap/ts2.php。

        2、請求tc2.php查看返回結果:

        詳解php soap實現web service接口服務

        3、通過瀏覽器,直接訪問wsdl文檔的地址,可以看到wsdl文檔的具體內容:

        詳解php soap實現web service接口服務

        php soap也支持各種其它的操作,例如鑒權,頭設置等,這些功能如有需要,可以參閱官方文檔。

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 精品国产香蕉伊思人在线在线亚洲一区二区 | 欧美视频精品一区二区三区| 日韩精品一区二区三区影院 | 国产精品无码一区二区在线观一| 国语自产少妇精品视频| 亚洲福利精品电影在线观看| 国产精品一香蕉国产线看观看 | 亚洲精品无码国产| 牛牛在线精品观看免费正| 在线电影国产精品| 九九精品成人免费国产片| 国产乱人伦偷精品视频免下载| 亚洲国产成人精品无码区在线观看| 免费人妻精品一区二区三区| 无码囯产精品一区二区免费| 国产精品污WWW一区二区三区| 久久免费国产精品一区二区| 国产精品亚洲日韩欧美色窝窝色欲 | 亚洲精品无码专区久久同性男| 国产精品最新国产精品第十页 | 久久亚洲精品国产精品| 亚洲精品无码av天堂| 久久精品国产一区二区三区| 99亚洲精品视频| www.精品| 99热日韩这里只有精品| 91精品国产91久久久久久| 久久精品国产精品国产精品污 | 国精品无码一区二区三区在线| 自拍偷自拍亚洲精品情侣| 亚洲国产一二三精品无码| 中文字幕精品一区| 亚洲精品美女久久777777| 亚洲日韩国产AV无码无码精品 | 人妻精品久久久久中文字幕69 | 亚洲AV日韩精品久久久久久| 亚洲精品无码成人片在线观看| 色婷婷噜噜久久国产精品12p| 无码国模国产在线无码精品国产自在久国产 | 久久精品国产亚洲AV电影| 潮喷大喷水系列无码久久精品|