SOAP webservice介面
PHP 中,在 php.ini 檔案中開啟了 php_soap.dll 擴充後,就可以支援 SOAP 了。
在soap擴充庫中,主要包括三種物件。
1、SoapServer
用於建立php伺服器端頁面時定義可被呼叫的函數及回傳回應資料。建立一個SoapServer物件的語法格式如下:
$soap = new SoapServer($wsdl, $array);
其中,$wsdl為shoap使用得wsdl文件,wsdl 是描述Web Service的一種標準格式, 其中,$wsdl為shoap使用得wsdl文件,wsdl 是描述Web Service的一種標準格式,其中若將$wsdl設定為null,則表示不使用wsdl模式。 $array是SoapServer的屬性訊息,是一個陣列。
SoapServer物件的addFunction方法是用來宣告哪個函數可以被客戶端調用,語法格式如下:
$soap->addFunction($function_name);
函數名。
SoapServer物件的handle方法用來處理使用者輸入並呼叫對應的函數,最後傳回給客戶端處理的結果。語法格式如下:
$soap->handle([$soap_request]);
其中,$soap是一個SoapServer物件,$soap_request是一個可選參數,用來表示使用者的請求資訊。如果不指定$soap_request,則表示伺服器將接收使用者的全部請求。
2、SoapCliet
用於呼叫遠端伺服器上的SoapServer頁面,並實作了對應函數的呼叫。建立一個SoapClient物件的語法格式如下:
$soap = new SoapClient($wsdl,$array);
其中,參數$wsdl和$array與SoapServer相同。
建立SoapClient物件後,呼叫服務端頁面中的函數相當於呼叫了SoapClient的方法,建立語法如下:
$soap->user_function($params);
,$soap->user_function($params);
要呼叫的函數,$params 是要傳入函數的參數。
3、SoapFault
SoapFault用於產生soap存取過程中可能出現的錯誤。建立一個soapFault物件的語法格式如下:
$fault = new SoapFault($faultcode,$faultstring);
其中,$faultcode是使用者定義的錯誤代碼,$faultstring是使用者自訂的錯誤訊息。 soapFault 物件會在伺服器端頁面發生錯誤時自動生成,或透過使用者自行建立SoapFault物件時生成。對於 Soap存取時發生的錯誤,用戶端可透過捕捉SoapFalut物件來獲得對應的錯誤訊息。
在客戶端捕獲SoapFault物件後,可以透過下面的程式碼取得錯誤代碼和錯誤訊息:
$fault->faultcode;//錯誤代碼
$fault->faultstring;//錯誤訊息前面建立的SoapFault物件。
不論是SoapServer還是SoapClient,都接收兩個參數,其中第二個參數是Option,它支援若干選項,這裡我們用到的有:
uri:命名空間,客戶端和服務端需要使用相同的命名空間
location:客戶端用,用來指定服務端程式的存取位址,也就是本例第二段程式碼的程式位址。
trace:客戶端用,為true時可以取得服務端與客戶端通訊的內容,以供調試。
Soapserver.php
Java程式碼
//先建立一個SoapServer物件實例,然後將我們要揭露的函數註冊,
/ap/p.
error_reporting(7); //正式發佈時,設為 0
date_default_timezone_set('PRC'); //設定時區 )
{
$retval = '';
if (strlen Fault ('Client', '', 'Invalid string');
}
for ($i = 1; $i
$retval .=$
return $retval;
}
function add2numbers($num1, $num2)
{
{
return new SoapFault ('Client', '', '第一個數字無效');
}
return new SoapFault('顧客端','','第二個數字無效'); } 回中($num1 + $num2);)
$time = date( 'Y-m-d H:i:s', time());
返回$時間;
}
} "));
$soap->addFunction('reverse');
$soap->addFunction('add2numbers');
$soap->addFunction('gettime); (SOAP_FUNCTIONS_ALL);
$soap->handle();
? >
SoapClient.php
Java 程式碼
error_reporting(7);
🠠p. location' => "http://www. yiigo.com/Soapserver.php", 'uri' =>"http://test -uri")); $str = 「此字串將被反轉」 ->reverse($str); echo 「如果你反轉'$str',你將會得到'$reversed'」;
$sum = $client->add2numbers($n1, $n2);
迴聲「
」;
迴聲「”;
echo 「remoye 系統時間是:」。 $client->gettime();
} catch (SoapFault $fault) {
echo 「故障!程式碼:」。 $故障->故障碼。 “ 細繩:” 。 $fault->faultstring;
}
? >
如果你反轉'這個字串將被反轉',你會得到'desrever eb lliw gnirts sihT'
如果你嘗試20 + 33,你會得到53remoye系統時間是:2012-05-28 16:14 :29
透過SoapHeader實現身分認證
Java程式碼
uth($a)
{
若($a!= '123456789 ') {
throw new SoapFault('伺服器', }
公用函數say()
{
} } $srv = new SoapServer(null, array('uri'h生活=> 'httpnew SoapServer(null, array('uri'h)> 'httpnew SoapServer(null, array('uri'h)> 'http
$srv->handle(); 客戶端Java代碼 $
array('uri' => 'http://localhost/namespace/',
'location' => true));
//auth為服務端要處理的函數 12345689為參數
$h = new SoapHeader , false, SOAP_ACTOR_NEXT);
$cli->__setSoapHeaders(array($h));
try {
echo $ echo $e->getMessage() ;
}
注意觀察server.php中的server類別有一個方法“auth”,剛好與header的名稱對應,方法auth的參數$u,就是soapHeader的data,soapServer接收到這個請求會,先調用auth方法,並將「123456789」當作參數傳遞給該方法。 mustUnderstand參數為false時,即便沒有auth這個方法,say方法也會被調用,但是如果它為true的話,如果auth方法不存在,就會返回一個Soapfault告知該header沒有被處理。 actor參數指名那些role必須處理該header,這兒我理解得不是太透徹,不好說。
Java代碼
$file = $this->getSoapWSDL();
$client = new SoapClient($file);//url可以透過瀏覽器來存取,不能直接呼叫瀏覽器userID' => 'test', 'merchantID' => 'test');
$returnSt = $client->checkUser($param); eck
public function getSoapWSDL() { //定期將url的檔案儲存到本地 $file = Mage::getBaseDir( . if (time() > filemtime($file) + 7 * 86400) { $url include_once(BP . DS . "lib/Snoopy.class.php"); $snoopy = new Snoopy; $snoopy->read_timeout = 4; $wsdl = $snoopy->results; if ($snoopy->status == '200' && !$ (!is_dir(dirname($file))) { mkdir(dirname ($file)); } } } return $file; }
熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

在Web開發領域中,Web服務是一種非常重要的技術,它可以使不同的應用程式之間相互通信,從而建立更複雜和強大的系統。在本文中,我們將深入探討如何使用PHP和SOAP實現Web服務的呼叫與開發。 SOAP(SimpleObjectAccessProtocol)是一種基於XML的協議,它用於在不同的應用程式之間進行資訊交換。 SOAP是重要的Web服務標

PHP和SOAP:如何實現資料的同步和非同步處理引言:在現代Web應用程式中,資料的同步和非同步處理變得越來越重要。同步處理指的是一次只處理一個請求,並等待該請求完成後再處理下一個請求;而異步處理則是同時處理多個請求,並不等待某個請求的完成。在本文中,我們將介紹如何使用PHP和SOAP來實現資料的同步和非同步處理。一、SOAP簡介SOAP(SimpleObjec

PHP與SOAP:如何實現遠端過程呼叫(RPC)簡介:近年來,隨著分散式系統的興起,遠端過程呼叫(RemoteProcedureCall,RPC)在Web開發中被廣泛採用。本文將介紹如何使用PHP和SOAP實作RPC,以及透過程式碼範例示範其用法。一、什麼是遠端過程呼叫(RPC)?遠端過程呼叫(RemoteProcedureCall,RPC)是一種通訊

隨著互聯網技術的不斷發展,越來越多的企業級應用需要向其它應用程式提供介面以實現資料和業務的互動。在這種情況下,我們需要一種可靠的協定來傳輸資料並確保資料的完整性和安全性。 SOAP(SimpleObjectAccessProtocol)是一種基於XML的協議,可用於在Web環境中實現應用程式之間的通訊。而PHP作為一種流行的Web程式語言,

使用Python解析SOAP訊息SOAP(SimpleObjectAccessProtocol)是一種基於XML的遠端過程呼叫(RPC)協議,用於在網路上不同的應用程式之間進行通訊。 Python提供了許多函式庫和工具來處理SOAP訊息,其中最常用的是suds函式庫。 suds是Python的一個SOAP客戶端程式庫,可以用來解析和產生SOAP訊息。它提供了一種簡單而

如何使用PHP和SOAP實現資料的壓縮和解壓縮導言:在現代網路應用中,資料的傳輸是非常常見的操作,然而,隨著網路應用的不斷發展,資料量的增加和傳輸速度的要求,合理地使用資料壓縮和解壓縮技術成為了一個非常重要的議題。在PHP開發中,我們可以使用SOAP(SimpleObjectAccessProtocol)協定來實現資料的壓縮和解壓縮。本文將介紹如何

如何使用PHP和SOAP實現Web服務的部署和發布引言:在當今互聯網時代,Web服務的部署和發布成為了一個非常重要的議題。 PHP是一種流行的伺服器端程式語言,而SOAP(SimpleObjectAccessProtocol)是一種XML協議,用於在Web服務之間進行通訊。本文將向您介紹如何使用PHP和SOAP實現Web服務的部署和發布,並提供一些程式碼示

利用PHP和SOAP建立基於Web的應用程式的完整指南在當今互聯網的時代,基於Web的應用程式已經成為了管理和互動資料的重要工具。 PHP作為一種強大的開發語言,可以與其他技術進行無縫集成,而SOAP(SimpleObjectAccessProtocol)作為一種基於XML的通信協議,為我們提供了一種簡單、標準和可擴展的方法來構建Web服務。本文將為您提
