php語言已經成為很多web應用、網站的基礎開發語言,其中soap協議的應用越來越廣泛。在php里,使用new soapclient可以輕松的實現soap協議的調用,下面將詳細講解它的使用方法。
使用new soapclient,首先要確定調用的wsdl文件,這個文件就是soap web service的描述文件,它規定了web service可以接收哪些方法,每個方法都需要哪些參數,并告知我們每個方法的返回值是什么??纯聪旅娴睦樱?/p>
$client = new soapclient('http://localhost/WebService/soapservice.asmx?WSDL');
以上代碼,我們定義了一個soap client,并告知它要請求哪個wsdl文件。這個文件的位置可以是本地,也可以是遠程。如果是本地的話,就是文件路徑;如果是遠程的話,就是url地址。這個關于new soapclient的參數還有很多可以設置,比如location、uri等。具體可以使用php的手冊進行查閱。
接下來,我們就可以通過$client來調用web service里的方法了,直接看下面的例子:
$result = $client->__soapCall('getOrderInfo', array('orderNo' =>'123456'));
以上代碼,我們調用了一個名為getOrderInfo的方法,這個方法需要傳遞一個參數orderNo。__soapCall是soapclient內置的一個方法,第一個參數就是soap web service里的方法名,第二個參數就是這個方法需要的參數,可以是數組、對象等。這個方法的返回結果就是我們要的結果,可以進行打印、處理等操作。
在使用new soapclient進行調用的時候,一定要注意,每個方法與參數都必須是在wsdl文件里面定義過的。否則無法在客戶端進行調用,也就是說客戶端無法獲知對應的方法和參數。
另外,還要注意,wsdl文件和獲取的結果都是XML格式。因此,在進行任何操作之前,都需要進行XML數據的處理和轉換。在適應和使用的過程中,還要注意以下幾個問題:
1. 對于返回結果而言,如果返回的是復雜類型,需要注意這個復雜類型內部是否還嵌套了其他類型,需要進行處理;
2. 另外,輸入的參數也需要結構化,如果不結構化,可能導致調用失??;
3. 因為這個協議是基于HTTP的,因此在調用時,需要避免一些對HTTP狀態的限制。
至此,我們已經詳細的介紹了使用php中的new soapclient進行soap協議的調用。雖然在調用過程中可能會遇到一些問題,但是只要掌握了其基本的調用方法和處理技巧,相信會更便捷地使用soap協議實現web service。