国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP中使用XML-RPC構造Web Service簡單入門

2024-05-04 21:51:08
字體:
來源:轉載
供稿:網友

[ Web Service介紹 ]

  Web Service就是為了異構系統的通信而產生的,它基本的思想就是使用基于XML的HTTP的遠程調用提供一種標準的機制,而省去建立一種新協議的需求。目前進行Web Service通信有兩種協議標準,一種是XML-RPC,另外一種是SOAP。XML-RPC比較簡單,出現時間比較早,SOAP比較復雜,主要是一些需要穩定、健壯、安全并且復雜交互的時候使用。

  PHP中集成了XML-RPC和SOAP兩種協議的訪問,都是集中在xmlrpc擴展當中。另外,在PHP的PEAR中,不管是PHP 4還是PHP 5,都已經默認集成了XML-RPC擴展,而且該擴展跟xmlrpc擴展無關,能夠獨立實現XML-RPC的協議交互,如果沒有xmlrpc擴展,建議使用PEAR::XML-RPC擴展。

  我們這里主要是以XML-RPC來簡單描述Web Service的交互過程,部分內容來自PHP手冊,更詳細內容,建議參考手冊。

[ 安裝xmlrpc擴展 ]

  如果你的系統中沒有安裝xmlrpc的php擴展,那么請正確安裝。

  在Windows平臺下,首先把PHP安裝目錄下的擴展php_xmlrpc.dll放到C:/Windows或者C:/Winnt目錄下,(PHP4的擴展在C:/php/extensions目錄中,PHP5的擴展在C:/php/ext目錄中),同時在C:/Windows/php.ini或者C:/Winnt/php.ini中把extension=php_xmlrpc.dll前面的分號";"去掉,然后重啟Web服務器后查看phpinfo()有沒有XML-RPC項目就能夠確定是否已經正確安裝xmlrpc擴展。

  在Unix/Linux平臺下,如果沒有安裝xmlrpc擴展,請在重新編譯PHP,在configure的時候請加入 --with-xmlrpc 選項,然后查看phpinfo()看是否正常安裝xmlrpc。

  (注意:以下操作都是建立在xmlrpc擴張正常安裝前提下,請務必正確安裝。)

[ XML-RPC工作原理 ]

  XML-RPC大致就是整個過程就是使用XML來進行通信。首先構造一個RPC 服務器端用來出來從RPC客戶端傳遞過來的使用XML封裝的請求,并且把處理結果通過XML的形式返回給RPC客戶端,客戶端就去分析XML獲取自己需要的數據。

  XML-RPC的服務器端必須有現成的函數提供給客戶端調用,并且客戶端提交的請求中的函數和方法必須和服務器端的一致,否則將無法獲取所需要的結果。

  下面我進行簡單的代碼來描述整個過程。

[ XML-RPC實踐 ]

  服務器端使用xmlrpc_server_create函數產生一個服務器端,然后把需要需要暴露的RPC調用接口進行注冊,接受RPC客戶端POST過來的XML數據,然后進行處理,處理結果通過XML的形式顯示給客戶端。

  代碼如下: rpc_server.php

<?php
/**
* 函數:提供給RPC客戶端調用的函數
* 參數:
* $method 客戶端需要調用的函數
* $params 客戶端需要調用的函數的參數數組
* 返回:返回指定調用結果
*/
function rpc_server_func($method, $params) {
$parameter = $params[0];
if ($parameter == "get")
{
$return = 'This data by get method';
}
else
{
$return = 'Not specify method or params';
}
return $return;
}

//產生一個XML-RPC的服務器端
$xmlrpc_server = xmlrpc_server_create();

//注冊一個服務器端調用的方法rpc_server,實際指向的是rpc_server_func函數
xmlrpc_server_register_method($xmlrpc_server, "rpc_server", "rpc_server_func");

//接受客戶端POST過來的XML數據
$request = $HTTP_RAW_POST_DATA;

//執行調用客戶端的XML請求后獲取執行結果
$xmlrpc_response = xmlrpc_server_call_method($xmlrpc_server, $request, null);

//把函數處理后的結果XML進行輸出
header('Content-Type: text/xml');
echo $xmlrpc_response;

//銷毀XML-RPC服務器端資源
xmlrpc_server_destroy($xmlrpc_server);
?>

共3頁上一頁123下一頁
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 仁怀市| 乐清市| 察雅县| 清远市| 大渡口区| 铜梁县| 和顺县| 南郑县| 开平市| 岗巴县| 仁怀市| 西贡区| 白水县| 平远县| 秦安县| 神池县| 新巴尔虎左旗| 泸溪县| 梧州市| 万宁市| 遵义市| 文山县| 淮北市| 商水县| 台北县| 和田县| 绥阳县| 新和县| 喜德县| 永清县| 古蔺县| 合江县| 弥勒县| 富蕴县| 老河口市| 天长市| 城固县| 大石桥市| 新营市| 茶陵县| 惠州市|