Web Services 學習筆記

來源:互聯網
上載者:User
 

Web Services 學習筆記

Submitted by jiashixiang on 2006, July 24, 1:38 PM. php學習

Web Services 學習筆記

許多機構已經採用了Apach和PHP作為他們的Web應用環境。在Web services模式中採用PHP可能看上去可能會比較難。但是事實上,你可以輕鬆的應用PHP5.0構建SOAP的用戶端和伺服器端。

什麼是 PHP?  PHP:Hypertext Preprocessor(超文本前置處理器,PHP)是一種流行的伺服器端指令碼語言,用於建立動態 Web 內容。PHP 解譯器為主流平台提供了原始碼或者編譯好的二進位檔案,這些平台包括大多數 Linux? 版本、Windows?、Mac OS X 和 iSeries?。

   確實有數百萬台 Web 服務器正在運行 PHP,其中大部分使用的是 PHP 4。2004 年 7 月推出的 PHP 5 正在逐漸被採用。PHP 5 改進了物件模型,底層的記憶體管理也從多線程和效能的角度重新作了設計。但是需要注意少數無法向後相容的修改,PHP 手冊中對這些進行了記錄。
什麼是 Web 服務技術?  Web 服務指的是自成體系的、模組化的應用程式,客戶機和服務在這種應用程式中是松耦合的。關於 Web 服務的詳細資料,對於本文來說,您只需要瞭解其中的主要技術:

  SOAP(簡易物件存取通訊協定 (SOAP))定義了客戶機與伺服器之間傳遞的訊息。訊息採用 XML 格式。SOAP 獨立於平台、程式設計語言、網路和傳輸層。本文將討論 HTTP 上的 SOAP。

  WSDL(Web 服務描述語言)是用於描述 Web 服務的基於 XML 的語言,描述內容包括服務的位置、格式、操作、參數和資料類型。

  UDDI(統一描述、發現和整合)是用 API 和 UDDI Registry 實現來提供在網路上儲存和檢索 Web 服務資訊的方法。

  本文包括 SOAP 訊息和 WSDL 文檔的一些例子,但沒有提供 UDDI 的例子。

  XMethods 網站是一個有用的 Web 服務工具,在那裡可以找到在各種伺服器平台上實現的可公開使用的 Web 服務的列表。可以使用本文中的例子很方便地訪問從 XMethods 中選擇的服務

SOAP 和 PHP  有多種產品允許在 PHP 4 指令碼中使用 SOAP,最常見的產品是 PEAR::SOAP 和 NuSOAP。在寫這篇文章的時候,這些產品在與 PHP 5 的相容方面還存在問題,估計很快就會升級。

  PHP 5 中新增了內建的 SOAP 延伸模組,我們稱之為 ext/soap。它是作為 PHP 的一部分提供的,因此不需要下載、安裝和管理單獨的包。這是第一個用 C 而不是 PHP 為 PHP 編寫的 SOAP 實現,因此作者聲稱它的速度要快得多。

  因為新的擴充是 PHP 的完整組成部分之一,相關文檔包含在 PHP 手冊的 Function Reference 部分。SOAP 參考是以一個重要的免責聲明開始的:

  警告:該擴充是實驗性的(EXPERIMENTAL)。本擴充的行為,包括關於本擴充的函數名和其他內容,在以後的 PHP 版本中隨時可能改變,不另行通知。使用該擴充的風險自負。

  警告看起來有點讓人擔心,但實際上這個擴充似乎得到了很好的支援。和任何新代碼一樣,該擴充也存在缺陷,但是報告的問題通常很快就能得到修正。在 PHP 網站上可以看到缺陷列表。我們估計,在將來的 PHP 版本中,該擴充將從實驗性功能轉為主流功能。
安裝 PHP SOAP 延伸模組

在 Windows 上,只要在;extension=php_zip.dll這行後面增加extension=php_soap.dll 這樣一行就行了

最後,ext/soap 在 php.ini 中有自己的配置部分,在完成配置之後,ext/soap 如下所示:

[soap]
; Enables or disables WSDL caching feature.
soap.wsdl_cache_enabled=1
; Sets the directory name where SOAP extension will put cache files.
soap.wsdl_cache_dir="D:/WEB/php/soap_temp"
; (time to live) Sets the number of second while cached file will be used
; instead of original one.
soap.wsdl_cache_ttl=86400

一個例子便能說明一切,讓我們先看一個例子為了說明如何應用PHP5.0來構建Web services,我們將舉一個簡單的例子。這個例子應用程式由一個PHP Web services的伺服器端和用戶端組成。他將實現兩個功能:顛倒一個字串字元的順序,求兩個數的和

PHP SOAP伺服器用PHP5.0來建立SOAP伺服器非常容易。基本上,你只要寫出你想要暴露給你的Web services的函數,然後去註冊它們就可以了。

OK,另外還需要兩步才能完成PHP SOAP伺服器的建立。首先你還要在你的PHP代碼中建立Soap對象的一個執行個體,然後用HTTP POST方法將未經處理資料傳給Soap進行處理。聽起來簡單吧。

先看看清單1

soapfunc.php

//soapfunc.php
function reverse($str){
$retval = "";
if(strlen($str) < 1) {
return new SoapFault(''Client'','''',''Invalid string''); // it is possible to use PHP exception mechanism to throw SOAP Fault

}
for ($i = 1; $i <= strlen($str); $i++) {
$retval .= $str[(strlen($str) - $i)];
}
return $retval;
}

function add2numbers($num1, $num2) {
if (trim($num1) != intval($num1)) {
return new SoapFault(''Client'', '''', ''The first number is invalid'');
}
if (trim($num2) != intval($num2)) {
return new SoapFault(''Client'', '''', ''The second number is invalid'');
}
return ($num1 + $num2);
}
?>
清 單1給出了soapfunc.php的源檔案。這個檔案包含了我們想通過SOAP協議暴露給Web services的兩個函數:reverse和add2numbers,它們是我們這個Web services 應用的核心。函數reverse帶一個參數,顛倒字串中的字元的順序,然後返回

清單2:soapserver.php

//soapserver.php
include_once(''soapfunc.php'');
$server = new SoapServer(null, array(''uri'' => "http://test-uri/"));//the creation of SoapServer objects in WSDL or non-WSDL mode

$server->addFunction(''reverse'');//Exports one or more functions for remote clients

$server->addFunction(''add2numbers'');//Exports one or more functions for remote clients

$server->handle();//Processes a soap request, calls necessary functions, and sends a response back. The soap request. If this argument is omitted, the req

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.