標籤:style class blog code http java
PHP SOAP擴充可以協助我們很輕鬆的實現web service服務,在PHP的SOAP擴充中主要有兩種操作模式:WSDL模式和NON-WSDL模式,前者通過使用WSDL檔案名稱作為參數,並從 WSDL中提取服務所使用的資訊,後者則是通過傳參的方式來傳遞所要使用的資訊。李壞今天主要為大家分享一下NON-WSDL模式的簡單用法。
首先我們來瞭解一下SOAP擴充的三個主要對象:
1.SoapServer
SoapServer用於建立php伺服器端頁面時定義可被調用的函數及返迴響應資料。建立一個NON-WSDL模式的SoapServer對象的文法格式如下:
$soap = new SoapServer(null,$arr);
$arr是SoapServer的屬性資訊,是一個數組。
SoapServer對象的addFunction方法是用來聲明哪個函數可以被用戶端調用,使用方法如下:
$soap->addFunction($functionName);
$functionName是允許用戶端調用的方法名稱。如果所有的方法都允許調用,可使用下面的方法:
$soap->addFunction(SOAP_FUNCTIONS_ALL);
SoapServer對象的handle方法用來處理使用者輸入並調用相應的函數,最後返回給用戶端處理的結果。使用方法如下:
$soap->handle([$soapRequest]);
$soapRequest是一個選擇性參數,用來表示使用者的請求資訊。如果不指定$soapRequest,則表示伺服器將接收使用者的全部請求。
2.SoapClient
SoapClient用於調用遠程伺服器上的SoapServer頁面,並實現了對相應函數的調用,建立一個SoapClient對象的方法如下:
$client = new SoapClient(null,$arr);
其中,參數$arr與SoapServer相同。穿件SoapClient對象後,調用伺服器端的方法如下:
$client->functionName($p);
functionName()為伺服器端待調用的函數名,$p 為參數。
3.SoapFault
SoapFault用於產生soap訪問過程中可能出現的錯誤。建立一個SoapFault對象的方法為:
$fault = new SoapFault($code,$msg);
參數$code為使用者定義的錯誤碼,$msg為使用者定義的錯誤資訊。soapFault對象會在伺服器端頁面出現錯誤時自動產生,或者通過使用者自 行建立SoapFault對象時產生。對於Soap訪問時出現的錯誤,用戶端可通過捕捉SoapFalut對象來獲得相應的錯誤資訊。在用戶端捕獲 SoapFault對象後,可以通過下面的代碼獲得錯誤碼和錯誤資訊:
$fault->code; //錯誤碼$fault->msg; //錯誤資訊
以上就是PHP SOAP模組主要的三個對象介紹,下面我們通過一個簡單的執行個體,協助大家理解一下soap模組的使用方法。
4.PHP SOAP執行個體(NON-WSDL模式)
伺服器(server)端代碼server.php:
$arr = array( ‘location‘ => ‘http://192.168.187.132/server.php‘, ‘uri‘ => ‘http://192.168.187.132/‘ ); $soap = new SoapServer( null ,$arr ); $soap->addFunction(SOAP_FUNCTIONS_ALL); //允許用戶端調用所有的方法 $soap->handle(); function a(){ return ‘李壞部落格‘; } function b($b){ return $b; }
用戶端(client)代碼:
$arr = array( ‘location‘ => ‘http://192.168.187.132/server.php‘, ‘uri‘ => ‘http://192.168.187.132/‘ ); $soap = new SoapClient( null, $arr ); echo $soap->a(),‘<br />‘; echo $soap->b(‘b‘);