應用NuSoap構建新型的基於PHP的Web服務

一個例子便能說明一切,讓咱們先看一個例子

爲了說明如何應用nusoap和php來構建web services,咱們將舉一個簡單的例子。這個例子應用程序由一個php web services的服務器端和客戶端組成。他將實現兩個功能:顛倒一個字符串字符的順序,求兩個數的和。

php soap服務器
用php和nusoap來創建soap服務器很是容易。基本上,你只要寫出你想要暴露給你的web services的函數,而後用nusoap去註冊它們就能夠了。

ok,另外還須要兩步才能完成php soap服務器的創建。首先你還要在你的php代碼中建立nusoap對象的一個實例,而後用http post方法將原始數據傳給nusoap進行處理。聽起來簡單吧。先看看清單1。

soapfunc.phpphp

<?
require_once(nusoap.php); 
function reverse($str){ 
  $retval = "";
   if(strlen($str) < 1) {
    return new soap_fault(client,,invalid string); 
   }
   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 soap_fault(client, , the   first number is invalid); 
  }
  if (trim($num2) != intval($num2)) {
    return new soap_fault(client, , the second number is invalid); 
  }
  return ($num1 + $num2); 
}
?>

soapfunc.php的源文件。這個文件包含了咱們想經過soap協議暴露給web services的兩個函數:reverse和add2numbers,它們是咱們這個web services 應用的核心。函數reverse帶一個參數,顛倒字符串中的字符的順序,而後返回。
web


soapserver.php數組

<?
require_once(nusoap.php);
include(soapfunc.php);
$soap = new soap_server;
$soap->register(reverse);
$soap->register(add2numbers);
$soap->service($http_raw_post_data);
?>

nusoap註冊函數和調用soap處理程序的用法。你看到了,註冊你的兩個函數(在soapfunc.php中)、傳遞post數據給 soap_server對象,就跟建立一個新的soap_server對象實例同樣的簡單。soap_server對象將要檢查post數據並肯定將調用 哪一個函數,而後向這個php函數傳遞參數。從php函數返回的數據被從新包裝爲soap響應並傳送給請求服務的soap客戶端。

php soap客戶端
如今咱們已經利用nusoap和php建立了一個soap服務器,咱們須要對它進行測試。像咱們創建soap服務器程序同樣,咱們能夠在php中利用nusoap再創建一個soap的客戶端程序。清單3給出了php soap客戶端程序的源程序。

如今咱們已經利用nusoap和php建立了一個soap服務器,咱們須要對它進行測試。像咱們創建soap服務器程序同樣,咱們能夠在php中利用nusoap再創建一個soap的客戶端程序。清單3給出了php soap客戶端程序的源程序。瀏覽器

soapclient.php服務器

<?
include(nusoap.php);
$client = new soapclient(http://localhost/soapserver.php);

$str = "this string will be reversed";
$params1 = array(str=>$str);
$reversed = $client->call(reverse,$params1);
echo "if you reverse $str, you get $reversed<br>\n";

$n1 = 5;
$n2 = 14;
$params2 = array(num1=>$n1, num2=>$n2);
$added = $client->call(add2numbers, $params2);
echo "if you add $n1 and $n2 you get $added<br>\n";
?>

爲了在一個soap服務器上能使用php客戶端程序,你還得作三件事情。第一,你要建立一個soapclient對象。soapclient對象負責處理 參數的編組和soap協議。soapclient須要一個必須是url的參數。這個url能夠指向一個實際soap服務器的http終端或者一個wsdl 描述。在咱們這個例子裏,它是指向咱們的php soap服務器的一個url。

當調用須要參數的函數時,你須要先建立一個參數數組,數組包括一組鍵-值(key-value)對。鍵(key)是參數的名字,值(value)是參數的值。

當須要調用函數時,你就用soapclient對象去調用,而且傳入兩個參數。第一個參數是你要調用的函數的名字,第二個參數是包含soap函數所帶參數的一個數組,主調函數將會返回你調用的soap函數的值。

要運行這個例子,只要簡單的在web瀏覽器中輸入soapclient.php的url。你將相似如下的輸出:

if you reverse this string will be reversed, you get desrever eb lliw gnirts siht if you add 5 and 14 you get 1Array 函數

相關文章
相關標籤/搜索