使用XMLRPC搭建WebService伺服器

2021-07-24 22:38:40 字數 2070 閱讀 1383

1、xmlrpc概念

xml rpc是使用http協議做為傳輸協議的rpc機制,使用xml文字的方式傳輸命令和資料。乙個rpc系統,必然包括2個部分:

1.rpc client,用來向rpc server呼叫方法,並接收方法的返回資料;

2.rpc server,用於響應rpcclient的請求,執行方法,並回送方法執行結果。rpc是remote procedure call的縮寫,翻譯成中文就是遠端過程呼叫,是一種在本地的機器上呼叫遠端機器上的乙個過程(方法)的技術,這個過程也被大家稱為「分布式計算」,是為了提高各個分立機器的「互操作性」而發明出來的技術。

2、搭建rpc服務端首先定義伺服器中執行的方法,然後建立xml rpc物件,註冊兩個方法,獲取從客戶端傳來的資料,伺服器傳過來的資料是乙個xml請求資料,最後呼叫伺服器中的方法,返回的資料格式也是xml資料格式。

<?php 

//定義可以被訪問的方法

function

hello

()//rpc server在呼叫函式時呼叫的引數是

// array(0=>'函式名',1=>array(實參1,實參2,實參3....),2=>null)

function

sum($method,$args,$extra)

//建立xmlrpc server

$server = xmlrpc_server_create();

xmlrpc_server_register_method($server, 'hello', 'hello');

xmlrpc_server_register_method($server, 'sum', 'sum');

//收取請求

//呼叫方法

$response = xmlrpc_server_call_method($server, $request, null);

//輸出資料

header('content-type:text/xml;charset=utf-8');

echo

$response;

//銷毀xmlrpc server資源

xmlrpc_server_destroy($server);

?>

3、搭建rpc客戶端首先定義了乙個類,名為rpcclient,類中主要有3個方法,乙個為__call方法,這是乙個魔術方法,當呼叫類中不存在的方法時就會觸發此模式方法,將方法名和引數包裝成xml資料,然後呼叫類中的第二個方法__query方法,在該方法中包裝乙個http post請求,請求攜帶的資料就為__call方法中形成的xml資料,然後訪問該請求。最後將獲得的xml資料解析為php格式。

<?php 

class

rpcclient

//請求遠端伺服器

private

function

__query

($request)

//魔術方法

public

function

__call

($method,$params)

}//測試呼叫

'hello方法:'.$client->hello().'

';//呼叫遠端伺服器中的hello方法

echo

'sum方法:'.$client->sum(1,2,3);//呼叫遠端伺服器中的sum方法

?>

執行結果:

使用 xml rpc 遠端呼叫

xml rpc可以看做是web service的簡化版,他們的區別是soap可以傳複雜的物件,而xml rpc呼叫只能傳簡單的型別,如string,int,double,boolean,byte,string.xml rpc呼叫簡單,尤其和ejb遠端呼叫相比,ejb遠端呼叫,客戶端必須用伺服器的ho...

使用cxf整合spring發布webservice

在工作中有些公司是會使用較老的發布方式來對外發布介面,比如webservice,這裡介紹的是使用spring 整合cfx發布webservice提供對外介面給其他公司 或別人 使用。cxf也是目前最流行的一種發布webservice方式。所需要的jar 因為臨時寫的,只是svn上截圖下來的 加入這幾...

使用XML RPC來控制Webmin

最近要搞到webmin這個東西,仔細看了看 耦合的還真是緊密。既然要管理伺服器。不可能自己重寫一套方案了,於是乎還是修改webmin,取我所用的改寫一些模組 1 使用soap lite這個包 這個包包含了xml rpc,soap等常用的封裝 2 apache perl cgi 安裝 在conf.ph...