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,得到以下結果 -

PHP

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