PHP webservice 的初接觸

來源:互聯網
上載者:User

標籤:

webservice 現在是開始流行了,很多業務開啟了這個功能。去年接觸的一個金融類的項目有類似功能調用。當時沒放心思研究,最兩天試著接觸了下,還真不錯的。起步其實挺簡單。

服務端的代碼

server.php

<?phpclass PassPort {    /**     * 打招呼     * @param string $name     */    public function hello($name) {        return ‘Hello ‘. $name. ‘ !<br />‘;    }    /**     * 求和     * @param int $a     * @param int $b     * @return int     */    public function add($a, $b) {        return $a + $b;    }        /**     * 再見了     */    public function say() {        return ‘GoodBye!<br />‘;    }}

 

首先需要有個 wsdl 檔案。兩種方法產生,一個是藉助 SoapDiscovery.class.php 類產生,這個需要從網上找下。

include ‘server.php‘;//服務類的定義檔案include ‘SoapDiscovery.class.php‘;//第一個參數為類的名字,這裡是 Api 也是產生的wsdl的檔案的名字,第二個參數是服務的名字可以自己自由定義$wsdl = new SoapDiscovery(‘Api‘, ‘service‘);$wsdl->getWSDL();

還有一種方法是通過 ZendStudio 產生,這個其實也很簡單。可能有人找不到添加 wsdl ,那就說明你沒有安裝這個外掛程式。點Help=》Welcome 然後選中 WSDL,會重啟一次。 

建立的時候 tagert namespace 填寫自己項目的訪問地址 就可以基本不用改。產生之後需要改些東西。

TestSoapSoap下面填寫php webService 如soapservice.phpNewOperation:添加方法。WebService裡需要提供給別人調用的方法名input :設定輸入參數名和類型output:設定傳回值。Add part:如果在input裡添加,就是添加多個參數set Type / set Element: 設定參數的input/output類型Type包含常見的資料類型(int,string,boolean,float,time…),Element就是自訂元素類型。

注意一點,右側的那些方法都是自己手動 通過 New Operation 來添加的,還有裡面的參數。關於參數和返回有點需要注意的,可以沒有參數,但是需要有返回,沒有返回用戶端不知道處理結果啊,我是這麼想的,必須要有返回。

這個時候看這好像完成了,其實沒有,因為只有第一個方法(預設會有一個)是存在的,其他的都沒有。需要點下中間的那個類似複選框的東西,然後在下面的介面點 Generate Binding Content 然後才可以正常用,否則會出現類似下面的提示錯誤。

xxx is not a valid method for this service

接下來就是寫用戶端的調用了 client.php。

<?phpini_set(‘soap.wsdl_cache_enabled‘, 0);ini_set(‘display_errors‘, 1);error_reporting(E_ALL);//錯誤顯示層級$client = new SoapClient(‘soap.wsdl‘);echo $client->hello(‘wayne‘);echo ‘The result is:‘, $client->add(7, 8), ‘<br />‘;echo $client->say();unset($client);

這裡要提下,出現 xxx is not a valid method for this service 這樣的提示,還有個可能就是你的服務端的方法改了,但是soap存在緩衝,預設是開啟的。linux環境下是 /tmp 目錄下,調試過程中可以設定關閉緩衝。使用語句  ini_set(‘soap.wsdl_cache_enabled‘, 0);來關閉。

最後通過瀏覽器訪問 client.php 就可以看到想要的結果了。

Hello wayne !The result is:15GoodBye!

好了,到這裡,初步接觸就結束了。其實執行個體化SoapServer SoapClient 對象的時候,還有好多參數,我現在的是 server.php 和 client.php 都在通一個目錄下。不存在url,之類的路徑問題。接下來就要關注這個了。

PHP webservice 的初接觸

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.