XML-RPC 是一种比 SOAP 更早的、简单的轻量级 Web 服务技术,是 XML Web 服务的鼻祖。它是一个用于远程过程调用(remote procedure call,RPC)的简单规范,这种调用使用 HTTP 作为传输协议,并使用 XML 词汇表作为消息有效负载。由于 XML-RPC 非常简单(整个规范打印出来还不到十页纸)。
XML-RPC 数据类型
XML-RPC 标签 描述
< string > 字符的一个序列
< int > 有符号或无符号 32-bit 整数值
< boolean > true(1)或 false(0)
< double > 有符号双精度浮点数
< dateTime.iso8601 > 日期和时间(当没有时区)
< base64 > 一个 base64 编码的字符串
< array > 一个数据类型序列的容器
< struct > 一个关键字-值对的容器
XML-RPC之Hello World:
处理器类:
package org.sun.rpc.handler;
public class HelloHandler {
public String sayHello(String name) {
return "Hello, " + name;
}
}
Server端:
package org.sun.rpc.server;
import java.io.IOException;
import org.apache.xmlrpc.XmlRpcException;
import org.apache.xmlrpc.server.PropertyHandlerMapping;
import org.apache.xmlrpc.server.XmlRpcServer;
import org.apache.xmlrpc.server.XmlRpcServerConfigImpl;
import org.apache.xmlrpc.webserver.WebServer;
import org.sun.rpc.handler.HelloHandler;
public class HelloServer {
public static final int PORT = 8080;
public static void main(String... args) throws XmlRpcException, IOException {
System.out.println("Starting RPC Server Now ...");
WebServer webServer = new WebServer(PORT);
XmlRpcServer xmlRpcServer = webServer.getXmlRpcServer();
PropertyHandlerMapping handlerMapping = new PropertyHandlerMapping();
handlerMapping.addHandler("hello", HelloHandler.class);
xmlRpcServer.setHandlerMapping(handlerMapping);
XmlRpcServerConfigImpl serverConfig = (XmlRpcServerConfigImpl) xmlRpcServer.getConfig();
serverConfig.setEnabledForExtensions(true);
serverConfig.setContentLengthOptional(false);
webServer.start();
System.out.println("Registered HelloHandler to \"hello\"");
System.out.println("Now Accepting Requests ...");
}
}
Client端:
package org.sun.rpc.client;
import java.net.MalformedURLException;
import java.net.URL;
import org.apache.xmlrpc.XmlRpcException;
import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
import org.apache.xmlrpc.client.XmlRpcCommonsTransportFactory;
public class HelloClient {
public static void main(String... args) throws MalformedURLException, XmlRpcException {
XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
config.setServerURL(new URL("http://127.0.0.1:8080/"));
XmlRpcClient client = new XmlRpcClient();
client.setTransportFactory(new XmlRpcCommonsTransportFactory(client));
client.setConfig(config);
Object[] params = new Object[] { "Jacky" };
String result = (String) client.execute("hello.sayHello", params);
System.out.println("Response from server is: " + result);
}
}
代码使用apache-xmlrpc库。
底层的处理:
sayHello()方法的请求实际被转换成一个HTTP调用,服务端解析XML文件后如果有匹配的方法将相应结果编码成XML文件。
分享到:
相关推荐
赠送jar包:simple-xml-safe-2.7.1.jar; 赠送原API文档:simple-xml-safe-2.7.1-javadoc.jar; 赠送源代码:simple-xml-safe-2.7.1-sources.jar; 赠送Maven依赖信息文件:simple-xml-safe-2.7.1.pom; 包含翻译后...
JavaEE源代码 xml-apisJavaEE源代码 xml-apisJavaEE源代码 xml-apisJavaEE源代码 xml-apisJavaEE源代码 xml-apisJavaEE源代码 xml-apisJavaEE源代码 xml-apisJavaEE源代码 xml-apisJavaEE源代码 xml-apisJavaEE源...
赠送jar包:jackson-dataformat-xml-2.12.2.jar; 赠送原API文档:jackson-dataformat-xml-2.12.2-javadoc.jar; 赠送源代码:jackson-dataformat-xml-2.12.2-sources.jar; 赠送Maven依赖信息文件:jackson-data...
simple-xml-safe-2.7.1.jar
xml-apis-2.0.2.jar ecside 依赖包之一xml-apis-2.0.2.jar ecside 依赖包之一
xml-apis-ext.jar,hightcharts导出图片是解决乱码需要用到的一个包
前端项目-fast-xml-parser,在没有C/C 的基础上快速解析XML到JS/JSON库
xml-apis-ext-1.3.04.jar
perl-XML-DOM-1.44-7.el6.noarch.rpm perl-XML-DOM-1.44-7.el6.noarch.rpm
xml-apis-2.0.2.pomxml-apis-2.0.2.pomxml-apis-2.0.2.pom
赠送jar包:jetty-xml-9.4.11.v20180605.jar; 赠送原API文档:jetty-xml-9.4.11.v20180605-javadoc.jar; 赠送源代码:jetty-xml-9.4.11.v20180605-sources.jar; 赠送Maven依赖信息文件:jetty-xml-9.4.11.v...
spring4-mvc-gradle-xml-hello-world, Gradle + spring 4 MVC Hello World 示例( XML ) Gradle --spring-4 MVC Hello Worldspring 4 MVC + JSP视图+ XML配置模板,使用Gradle构建工具。使用的###1. 技术Gradle 2.0...
最新的 xml-security-bin-1_4_3.zip
xml-rpc 学习心得是我自己的学习心得体会。
xml-resolver-1.2 xml-resolver-1.2
xbeanetc.rar 该压缩包包括如下jar包: xbean.jar xbean_xpath.jar xerces.jar xercesImpl.jar xercesImpl-2.6.2.jar xml-apis.jar xml-apis1.jar xml-apis-2.6.2.jar xmlbeans-qname.jar...
简单介绍了XML-RPC这种通过HTTP协议进行RPC通信的规范。 以Apache XML-RPC 3.0为基础,对XML-RPC的基本原理及Apache XML-RPC 3.0的主要特性进行了讨论和分析
xml-apis现在,为了方便大家学校Java,我现在上传一系列Java包,这些都是大家经常用到的,放心下载。这一系列材料,大家可以上我的资源库下载。
赠送jar包:jackson-dataformat-xml-2.12.2.jar; 赠送原API文档:jackson-dataformat-xml-2.12.2-javadoc.jar; 赠送源代码:jackson-dataformat-xml-2.12.2-sources.jar; 赠送Maven依赖信息文件:jackson-data...
xml-crypto 是一个 Node.js 的扩展用来实现对 XML 数据签名和加密。 示例代码: var SignedXml = require('xml-crypto').SignedXml , FileKeyInfo = require('xml-crypto').FileKeyInfo , fs = require('fs') ...