首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Apache XML-RPC 實戰入門:Java 與 Python 跨語言遠程調用

     編輯:Java 相關知識

XML-RPC 簡介

基於 HTTP 傳輸、XML 承載的遠程過程調用協議。規範定義六種資料型別與 Java 映射:

XML-RPCJava
<i4>/<int>int
<boolean>boolean
<string>java.lang.String
<double>double
<dateTime.iso8601>java.util.Date
<struct>java.util.Hashtable
<array>java.util.Vector
<base64>byte[]

伺服器端實現 (Servlet)

// 業務處理類
public class MyHandler {
    public String sayHello(String str) { return "Hello, " + str; }
}

// XML-RPC Servlet
public class MyXmlRpcServer extends HttpServlet {
    public void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        XmlRpcServer xmlrpc = new XmlRpcServer();
        xmlrpc.addHandler("myHandler", new MyHandler()); // 註冊處理器
        byte[] result = xmlrpc.execute(req.getInputStream()); // 執行並獲取結果
        resp.setContentType("text/xml");
        resp.getOutputStream().write(result);
    }
}

web.xml 映射 Servlet 路徑 /MyXmlRpcServer。

客戶端調用

Java 客戶端

XmlRpcClient client = new XmlRpcClient("https://localhost:8080/XMLRPC/MyXmlRpcServer");
Vector params = new Vector();
params.addElement("Tom");
String result = (String) client.execute("myHandler.sayHello", params);
System.out.println(result); // Hello, Tom

Python 客戶端 (標準庫 xmlrpclib)

import xmlrpclib
server = xmlrpclib.Server('https://localhost:8080/XMLRPC/MyXmlRpcServer')
print server.myHandler.sayHello('Tom')

關鍵點

  • Handler 名稱 (myHandler) + 方法名 (sayHello) 組成調用路徑 myHandler.sayHello。
  • 參數用 Vector 封裝,順序對應方法簽名。
  • 跨語言互通是 XML-RPC 最大優勢,適合輕量級異構系統整合。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved