客户端代码:

package test_xmlrpc.test;

import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;

public class RpcClient {
    public static void main(String[] args) throws Exception {
        // 实例化一个客户端配置对象 XmlRpcClientConfigImpl config,为该实例指定服务端 URL 属性
        XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
        config.setServerURL(new URL("http://127.0.0.1:8005/xmlrpc"));
        
        //创建 XmlRpcClient 对象,为其指定配置对象
        XmlRpcClient client = new XmlRpcClient();
        client.setConfig(config);

// 创建参数数组
        List<String> list = new ArrayList<String>();
        list.add("xx");
        list.add("hello");

// 调用服务器端方法“Hello”
        String result = (String) client.execute("HelloHandler.Hello", list);
        System.out.println(result);
    }
}

服务端代码:

package test_xmlrpc.test;

import org.apache.xmlrpc.server.PropertyHandlerMapping;
import org.apache.xmlrpc.server.XmlRpcServer;
import org.apache.xmlrpc.server.XmlRpcServerConfigImpl;
import org.apache.xmlrpc.webserver.WebServer;

public class RpcServer {
    private static final int port = 8005;

public static void main(String[] args) throws Exception {
        WebServer webServer = new WebServer(port);

// XmlRpcServer 对象用于接收并执行来自客户端的 XML-RPC 调用
        XmlRpcServer xmlRpcServer = webServer.getXmlRpcServer();
        PropertyHandlerMapping phm = new PropertyHandlerMapping();
        phm.addHandler("HelloHandler", HelloHandler.class);
        xmlRpcServer.setHandlerMapping(phm);
        XmlRpcServerConfigImpl config = (XmlRpcServerConfigImpl) xmlRpcServer.getConfig();

// enabledForExtensions: 指定是否启用 Apache 对 XML-RPC 的扩展。
        config.setEnabledForExtensions(true);
        config.setContentLengthOptional(false);
        webServer.start();
    }
}

HelloHandler类:

package test_xmlrpc.test;

public class HelloHandler {
    public String Hello(String name,String word){
        return name+word;
    }

}

附详解链接:XML-RPC 的 Apache 实现

最新文章

  1. 利用for循环找出1000以内的质数
  2. 6. web前端开发分享-css,js移动篇
  3. Java泛型 E、T、K、V、N
  4. Delphi word编辑
  5. javascript 第26节 jQuery对象
  6. oracle 分区表exchange原理
  7. C3制作导航栏分割线及立体风格
  8. 游标的小知识(借鉴and整理)
  9. SpringBoot图片上传(四) 一个input上传N张图,支持各种类型
  10. node.js服务器搭建
  11. Linux下通过 rm -f 删除大量文件时报错:Argument list too long
  12. 我对CopyOnWrite的思考
  13. tmux的复制粘贴
  14. phpstorm之ssh链接远程Linux服务器
  15. shell编程中的单/双 小括号, 中括号, 大括号
  16. openstack网络基本概念(转)
  17. Internet History, Technology and Security (Week3)
  18. 洛谷 P1878 舞蹈课 解题报告
  19. java int类型转换成String , 不足10位 在前面补0
  20. django中models阅读笔记

热门文章

  1. 深入浅出Node.js (4) - 异步编程
  2. 【转】 Ubuntu下配置USB转串口及串口工具配置--不错
  3. c++ 13
  4. Windows无需CygWin 使用NDK开发
  5. poj 3180 The Cow Prom(tarjan+缩点 easy)
  6. Test注解的两个属性:expected和timeout
  7. HDU4496_D-City(并查集删边/逆向)
  8. oracle数据库recover和restore的区别
  9. xUtils的文件下载与安装,xUtils的文件上传
  10. 提示框的优化之自定义Toast组件之(二)Toast组件的业务逻辑实现