DIV CSS 佈局教程網
設為首頁
加入收藏
首頁
HTML基礎知識
CSS入門知識
JavaScript入門知識
DIV+CSS佈局
WEB網站前端
網頁腳本
網頁SEO優化
網頁制作工具
DIV+CSS佈局教程網
>>
網頁腳本
>>
XML學習教程
>>
XML詳解
>> XML-RPC入門
XML-RPC入門
編輯:XML詳解  
一、什麼是XML-RPC
XML-rpc 是一套允許運行在不同操作系統、不同環境的程序實現基於internet過程調用的規范和一系列的實現。
這種遠程過程調用使用http作為傳輸協議,xml作為傳送信息的編碼格式。XML-Rpc的定義盡可能的保持了簡單,但同時能夠傳送、處理、返回復雜的數據結構。
Xml-rpc是工作在internet上的遠程過程調用協議。一個xml-rpc消息就是一個請求體為xml的http-post請求,被調用的方法在服務器端執行並將執行結果以XML格式編碼後返回。
Request example
Here's an example of an XML-RPC request:
POST /RPC2 HTTP1.0
User-Agent: FrontIEr5.1.2 (WinNT)
Host: betty.userland.com
Content-Type: textXML
Content-
length
: 181
<?XML version="1.0"?>
<methodCall>
<methodName>examples.getStateName</methodName>
<params>
<param>
<value><i4>41</i4></value>
</param>
</params>
</methodCall>
Response example
Here's an example of a response to an XML-RPC request:
HTTP1.1 200 OK
Connection: close
Content-Length: 158
Content-Type: textXML
Date: Fri, 17 Jul 1998 19:55:08 GMT
Server: UserLand FrontIEr5.1.2-WinNT
<?XML version="1.0"?>
<methodResponse>
<params>
<param>
<value><string>South Dakota</string></value>
</param>
</params>
</methodResponse>
二、XML-rpc入門程序
以下的入門程序包括一個管理器(HelloHandler)、一個服務器(HelloServer)、一個客戶程序(HelloClIEnt)。
首先要做的是創建用於遠程過程調用的類和方法,人們常常稱之為管理器。Xml-rpc管理器是一個方法和方法集,它接受XML-rpc請求,並對請求的內容進行解碼,再向一個類和方法發出請求。
//管理器類
package
XMLRpc;
/**
* @author trIEr
*
* <b><code>HelloHandler</code></b> is a simple handler than can
* be registered with an XML-RPC server
*/
public
class
HelloHandler {
public
String
sayHello(
String
name){
return
"Hello " + name;
}
}
服務器程序將創建的管理器注冊到服務器上,並為服務器指明應用程序其他特定的參數。
//服務器類
package
XMLRpc;
/**
*
* <b><code>HelloServer</code></b> is a simple XML-RPC server
* that will take the <code>HelloHandler</code> class available
* for XML-PRC calls.
*
*/
import
org.apache.XMLrpc.WebServer;
import
org.apache.xmlrpc.XMLRpc;
import
Java.io.
IOException
;
public
class
HelloServer {
public
static
void
main(
String
[] args){
if
(args.
length
<1){
System
.out.println("Usage: Java HelloServer [port]");
System
.exit(-1);
}
try
{
XMLRpc.setDriver("org.apache.xerces.parsers.SAXParser");
//start the server
System
.out.println("Starting XML-RPC Server......");
WebServer server =
new
WebServer(
Integer
.parseInt(args[0]));
//register our handler class
server.addHandler("hello",
new
HelloHandler());
System
.out.println("Now accepting requests......");
}
catch
(
ClassNotFoundException
e){
System
.out.println("Could not locate SAX Driver");
}
catch
(
IOException
e){
System
.out.println("Could not start server: "+e.getMessage());
}
}
}
//客戶程序
package
XMLRpc;
/**
*
* <b><code>HelloClIEnt</code></b> is a simple XML-RPC clIEnt
* that makes an XML-RPC request to <code>HelloServer</code>
*/
import
Java.io.
IOException
;
import
Java.util.
Vector
;
import
org.apache.xmlrpc.XMLRpc;
import
org.apache.xmlrpc.XMLRpcClIEnt;
import
Java.Net.
MalformedURLException
;
import
org.apache.xmlrpc.XMLRpcException;
public
class
HelloClIEnt {
public
static
void
main(
String
[] args){
if
(args.
length
<1){
System
.out.println("Usage: Java HelloClIEnt [your name]");
System
.exit(-1);
}
try
{
//Use the apache Xereces SAX Driver
XMLRpc.setDriver("org.apache.xerces.parsers.SAXParser");
//Specify the server
XMLRpcClient clIEnt =
new
XMLRpcClIEnt("http://localhost:8585");
//create request
Vector
params =
new
Vector
();
params.addElement(args[0]);
//make a request and print the result
String
result = (
String
)clIEnt.execute("hello.sayHello",params);
System
.out.println("Response from server: "+ result);
}
catch
(
ClassNotFoundException
e){
System
.out.println("Could not locate SAX Driver");
}
catch
(
MalformedURLException
e){
System
.out.println("Incorrect URL fro XML-rpc server foramt:"+e.getMessage());
}
catch
(XMLRpcException e){
System
.out.println("XMLRpcException :"+e.getMessage());
}
catch
(
IOException
e){
System
.out.println("IOException:"+e.getMessage());
}
}
}
三、RPC和RMI的簡單比較
在RMI和RPC之間最主要的區別在於方法是如何別調用的。在RMI中,遠程接口使每個遠程方法都具有方法簽名。如果一個方法在服務器上執行,但是沒有相匹配的簽名被添加到這個遠程接口上,那麼這個新方法就不能被RMI客戶方所調用。在RPC中,當一個請求到達RPC服務器時,這個請求就包含了一個參數集和一個文本值,通常形成“classname.methodname”的形式。這就向RPC服務器表明,被請求的方法在為“classname”的類中,名叫“methodname”。然後RPC服務器就去搜索與之相匹配的類和方法,並把它作為那種方法參數類型的輸入。這裡的參數類型是與RPC請求中的類型是匹配的。一旦匹配成功,這個方法就被調用了,其結果被編碼後返回客戶方。
上一頁:
XML Schema全接觸(XML Schema和名域 )
下一頁:
XML的誕生、特點及主要相關技術分類
XML詳解
使用Java和XSLT生成動態Web頁面
在 XML 之前,開發人員必須用一些服務器方腳本技術(如 CGI、Java 小服務程序或 JSP)
與前兩篇文章中的解組器相比,這裡的更改非常少。首先,創建一個 Unmarshaller 實例,使用的參數是 Book.class。這告訴解組器要解組的頂級類是哪個類。注意,這個頂級 Java 類對應於使用 map-to 元素的 mapping 元素。然後設置映射,最後調用 unmarshal() 的非靜態版本。
本文示例源代碼或素材下載 需要准備什麼 開始之前需要保證具備了本文所需要的前提條件。確保滿足
XML入門常見問題(4)
在 XML 對象模型中如何處理空白字符? 有些時候,XML 對象模型將顯示包含空白字符的 TE
相關文章
學習XML關於圖像超鏈接的制作
HTML做的網頁 如何使當前頁面跳轉到另一頁面錨點處
HTML初學簡單頁面結構
HTMl5的存儲方式sessionStorage和localStorage詳解
HTML5理論實踐與練習之拖放
新年快樂HTML5特效
HTML5+jQuery實現全屏煙花特效
jQuery+HTML5電子通知倒計時特效
jQuery+Html5實現唯美表白動畫
html5橡皮檫特效
XML基礎
XML與XSLT
XML詳解
小編推薦
使用 XML: 安全編碼實踐 (1)
XML開發入門基礎:XML 的用途
用XML+FSO+JS實現服務器端文件
XML字符串和XML DOCUMENT的相互轉換
XMLHTTP GetHTML頁面時的中文亂碼之完全客戶端Script解決方案
關於 XML 的十種觀點
XML和實體序列化和反序列化
XML+CSS的范例
DB2 Version 9.5 pureXML新增強概述
JDOM/XPATH編程指南
熱門推薦
XML、Java 與 XMLBeans 結合應用的商業價值
XML卷之實戰錦囊(5)結構樹圖
利用XmlTextWriter類增強XML數據的可讀性
[推薦]XML數據島
XML 編程思想:XML和語義
XML 編程思想: 使用 Atom 格式連鎖新聞及其他內容
XML學習交流(2) 快速入門之一
XAML 實例演示之五 – Canvas和ViewBox控件的使用
使用C++和XML建立智能文檔(二)
大家都在看
JS簡單計算器實例教程
基於jQuery的自動完成插件
各種網絡圖片格式詳解 PNG的好處
CSS常用技巧匯總
CSS樣式表常用技巧
網頁文字設計應該像聰明女孩穿衣服
淺談javascript控制HTML5的全屏操控,浏覽器兼容的問題
JS HTML5 音樂天氣播放器(Ajax獲取天氣信息)
XML學習教程
|
jQuery入門知識
|
AJAX入門
|
Dreamweaver教程
|
Fireworks入門知識
|
SEO技巧
|
SEO優化集錦
|
Copyright ©
DIV+CSS佈局教程網
All Rights Reserved