PHP Web Service範例


在這篇文章中將演示如何使用PHP程式碼來編寫Web Service功能。 這是一個非常初級的Web服務範例,但可將它擴充套件並在伺服器上執行它。需要以下幾個步驟 -

  • 什麼是SOAP?
  • 為何選擇SOAP?
  • 建立Web 方法
  • 使用Web Service

1. 什麼是SOAP?

SOAP基於XML,因此被認為是人類可讀性較好的檔案(程式碼)。SOAP是用於存取Web服務的協定。 它是一種簡單的基於XML的協定,允許應用程式通過HTTP交換資訊。

2. 為何選擇SOAP?

在實際應用中,通過遠端過程呼叫(RPC)在DCOM和CORBA之類的物件之間進行資料通訊需要很多應用程式,但HTTP不是為此而設計的。

  • RPC需要相容性
  • 安全問題
  • 防火牆和代理伺服器通常會阻止此類流量。

在應用程式之間進行通訊的更好方法是通過HTTP,因為所有Internet瀏覽器和伺服器都支援HTTP。 這就是為什麼它比SOAP服務更可取。

我們可以與其他程式員在多個平台上構建大型和複雜的應用程式進行共同作業。

3. 編寫程式碼

在這裡,將使用PHP程式碼建立一個Web服務。 所以按照下面給出的步驟:

第1步:首先從 http://sourceforge.net/projects/nusoap/ 下載nusoap庫。
第2步:執行WAMP伺服器,進入到D:/wamp/www根檔案夾位置。
第3步:在D:/wamp/www根檔案夾中建立一個檔案夾:websoap
第4步:將第1步下載檔案中的lib檔案夾複製到D:/wamp/www 目錄中。
第5步:在websoap 檔案夾中建立兩個PHP檔案 - server.phpclient.php
第6步:在server.php檔案裡面,編寫下面程式碼內容:

<?php
ini_set('display_errors', 'Off');

//call library 
require_once ('lib/nusoap.php'); 
//using soap_server to create server object 

$server = new soap_server;
$server->soap_defencoding = 'UTF-8';
$server->decode_utf8 = false;
$server->xml_encoding = 'UTF-8';

//$server->register('sayHello', array("name"=>"xsd:string"), array("return"=>"xsd:string"));
//register a function that works on server 
$server->register('sayHello'); 

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
// create HTTP listener 
$server->service($HTTP_RAW_POST_DATA); 


function sayHello($name='Maxsu') {
       return "Hello, {$name}!";
}

第7步:建立server.php檔案後,現在測試此伺服器功能。 開啟瀏覽器並輸入URL => http://localhost/wsoap/server.php?wsdl

第8步:在wsoap檔案夾建立一個client.php檔案,編寫下面程式碼內容:

<?php
ini_set('display_errors', 'On');
require_once ('lib/nusoap.php'); 

//Give it value at parameter 
//Create object that referer a web services 
$client = new soapclient('http://localhost/wsoap/server.php'); 
$client->soap_defencoding = 'UTF-8';
$client->decode_utf8 = false;
$client->xml_encoding = 'UTF-8';

//Call a function at server and send parameters too 
$params=array('name'=>'Maxsu');
$result = $client->call('sayHello', $params);

if (!$err=$client->getError()) {
    echo "return: ",htmlentities($result,ENT_QUOTES);
} else { 
    echo "Error: ",htmlentities($err,ENT_QUOTES);
}

開啟瀏覽器,開啟瀏覽器存取:http://localhost/wsoap/client.php,得到以下結果 -

這個範例演示了如何使用簡單的SOAP Web服務並從用戶端的服務獲取訊息。希望這篇文章能幫助您使用SOAP建立一個簡單的Web服務。