一 什麼是soap?可以做什麼?
二 什麼是wsdl?可以做什麼?
wsdl 指網路服務描述語言。是一種基於xml編寫的文件。為使用者提供詳細的介面說明書。
怎樣向別人介紹你的web服務(web service)有哪些功能,以及每個函式呼叫時的引數呢?你可能會自己寫一套文件,甚至可能會口頭告訴使用你web服務的人。
這些非正式的的方法至少都有乙個嚴重的問題:當程式設計師坐到電腦前,想要使用你的web服務的時候,他們的開放環境無法給他們提供任何幫助,因為這些工具根本不了解你的web服務.
解決方法是:用機器能閱讀的方式提供乙個正式的描述文件。web服務描述語言(wsdl)就是這樣乙個基於xml的語言。用於描述web服務及其函式,引數,返回值。因是基於xml,所以wsdl即使機器可閱讀,又是人可閱讀的。
三 利用php soap例項web service
php有兩個擴充套件可以實現web service,乙個是nusoap,乙個是php 官方的soap擴充套件,由於soap是官方的,所以我們這裡以soap來實現web service.由於預設是沒有開啟soap擴充套件的,所以自己先看一下soap擴充套件有沒有開啟。
在soap編寫web service的過程中主要用到了soapclient,soapserver,soapfault三個類。
soapclient類
這個類用來使用web services。soapclient類可以作為給定web services的客戶端。
它有兩種操作形式:
* wsdl 模式
* non-wsdl 模式
在wsdl模式中,構造器可以使用wsdl檔名作為引數,並從wsdl中提取服務所使用的資訊。
non-wsdl模式中使用引數來傳遞要使用的資訊。
soapserver類
這個類可以用來提供web
services。與soapclient類似,soapserver也有兩種操作模式:wsdl模式和non-wsdl模式。這兩種模式的意義跟
soapclient的兩種模式一樣。在wsdl模式中,服務實現了wsdl提供的介面;在non-wsdl模式中,引數被用來管理服務的行為。
在soapserver類的眾多方法中,有三個方法比較重要。它們是soapserver::setclass(),soapserver::addfunction()和soapserver::handle()。
四 例項
定義乙個提供服務的php類,這個類所提供的函式就是web service對外提供的服務
classpersoninfo
}
下面給出伺服器端的**:
//包含提供服務的類進來
include 'test.php';
/*建立soap服務端
引數1 : wsdl的url位址,如果不是wsdl模式,傳個null
引數2 : 如果是wsdl模式,可以不傳.如果不是wsdl模式,傳個陣列.定義個uri子單元. */
$s = new soapserver(null,array("uri"=>"此處隨便寫,只是命名空間"));
//設定用於處理soap請求的類
$s -> setclass("personinfo");
//處理請求
$s -> handle();
下面給出客戶端的**:
trycatch(soapfault $e
)catch(exception
$e)
利用PHP SOAP實現WEB SERVICE
php有兩個擴充套件可以實現web service,乙個是nusoap,乙個是php 官方的soap擴充套件,由於soap是官方的,所以我們這裡以soap來實現web service.由於預設是沒有開啟soap擴充套件的,所以自己先看一下soap擴充套件有沒有開啟。在soap編寫web servic...
利用php soap實現web service
今天學習到soap,偶遇到一介紹soap的博文,mark下。php有兩個擴充套件可以實現web service,乙個是nusoap,乙個是php 官方的soap擴充套件,由於soap是官方的,所以我們這裡以soap來實現web service.由於預設是沒有開啟soap擴充套件的,所以自己先看一下s...
利用PHP SOAP實現WEB SERVICE
php有兩個擴充套件可以實現web service,乙個是nusoap,乙個是php 官方的soap擴充套件,由於soap是官方的,所以我們這裡以soap來實現web service.由於預設是沒有開啟soap擴充套件的,所以自己先看一下soap擴充套件有沒有開啟。在soap編寫web servic...