使用java通过XMLRPC与服务器进行通讯
服务端代码:
public class XmlRpcServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 2202885997961418581L;
private XmlRpcServletServer server;
public void init(ServletConfig pConfig) throws ServletException {
super.init(pConfig);
try {
// create a new XmlRpcServletServer object
server = new XmlRpcServletServer();
// set up handler mapping of XmlRpcServletServer object
PropertyHandlerMapping phm = new PropertyHandlerMapping();
phm.addHandler("HelloHandler", HelloService.class);
server.setHandlerMapping(phm);
// more config of XmlRpcServletServer object
XmlRpcServerConfigImpl serverConfig = (XmlRpcServerConfigImpl)server.getConfig();
serverConfig.setEnabledForExtensions(true);
serverConfig.setContentLengthOptional(false);
} catch (XmlRpcException e) {
try {
log("Failed to create XmlRpcServer: " + e.getMessage(), e);
} catch (Throwable ignore) {
}
throw new ServletException(e);
}
}
public void doPost(HttpServletRequest pRequest, HttpServletResponse pResponse)
throws IOException, ServletException {
server.execute(pRequest, pResponse);
}
}
将servlet配置到web.xml中
<servlet>
<servlet-name>XmlRpcServlet</servlet-name>
<servlet-class>com.xmlrpc.server.XmlRpcServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>XmlRpcServlet</servlet-name>
<url-pattern>/xmlrpc</url-pattern>
</servlet-mapping>
服务端handler,可自定义
public class HelloService {
public String sayHello(String name){
return "Hello: "+name+" !";
}
}
客户端代码:
public class RpcClient {
/**
* @param args
*/
public static void main(String[] args) {
try {
// config client
XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
config.setServerURL(new URL("http://127.0.0.1:8080/RPCFirstProject/xmlrpc")); // should be modified according to your configuration of jsp container
// create a new XmlRpcClient object and bind above config object with it
XmlRpcClient client = new XmlRpcClient();
client.setConfig(config);
// create parameter list
Vector<String> params = new Vector<String>();
params.addElement("Tom");
// execute XML-RPC call
Object result = client.execute("HelloHandler.sayHello", params);
System.out.println(result);
} catch (MalformedURLException e) {
System.out.println(e.toString());
} catch (XmlRpcException e) {
System.out.println(e.toString());
}
}
}