java中xmlrpc的使用
来源:互联网 发布:office2016vol版mac 编辑:程序博客网 时间:2024/05/21 16:53
我们在提供远程接口时可以使用webservice的方式,使用xmlrpc同样也可以实现,并且开发简单。实现的方式有许多种,以下采用httpservlet的方式实现
需要使用到的jar包:xercesImpl.jar xmlrpc-2.0.1.jar commons-codec_1.3.jar 见附件
1、写个接口实现类
import java.io.IOException;
public class ServerDemo {
//验证登陆
public byte[] checkLogin(byte[] username,byte[] password){
if(new String(username).equals("allen")&&new String(password).equals("123456")){
return "登陆成功".getBytes();
}else
{
return "登陆失败".getBytes();
}
}
}
2、写个初始化的servlet
package com.xml.rpc.server;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.xmlrpc.XmlRpcServer;
public class XrpcProxyServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = 1L;
private XmlRpcServer xmlrpc = new XmlRpcServer();
public XrpcProxyServlet() {
}
public void init() throws ServletException {
xmlrpc.addHandler("xmlrpcOrder", new ServerDemo());
xmlrpc.setMaxThreads(30);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
byte[] result = xmlrpc.execute(request.getInputStream());
response.setContentType("text/xml");
response.setContentLength(result.length);
OutputStream out = response.getOutputStream();
out.write(result);
out.flush();
out.close();
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
3、在web.xml中配置这个servlet
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.xml.rpc.server.XrpcProxyServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/xmlrpc</url-pattern>
</servlet-mapping>
以上服务端的代码完成,下面是客户端调用的实现:
XmlRpc.setDriver("org.apache.xerces.parsers.SAXParser");
XmlRpcClient client = new XmlRpcClient("http://localhost:8080/XmlRpc/xmlrpc");
Vector params = new Vector();
params.addElement("allen".getBytes());
params.addElement("123456".getBytes());
username.setText("----alen");
byte[] flag=(byte[])client.execute("xmlrpcOrder.checkLogin",params);
System.out.println("-----调用成功");
-----------------------------------------------------------------
以上实现类的创建方式采用new的方式,若采用spring框架也可以采用注入的方式,
上次用spring的mvc框架实现,实现方式这里也贴一下,在Controller中:
@Controller
public class XmlrpcController extends AbstractController implements InitializingBean {
@Autowired
private OrderService orderService;
XmlRpcServer server=null;
@RequestMapping("/xmlprc.action")
protected ModelAndView handleRequestInternal(HttpServletRequest request,
HttpServletResponse response) throws Exception {
byte[] resp = server.execute(request.getInputStream());
response.getOutputStream().write(resp);
return null;
}
public void afterPropertiesSet() throws Exception {
server= new XmlRpcServer();
server.addHandler("xmlrpcOrder", orderService);
}
}
xmlrpc还是比较好用的,同样在其他语言中也有实现,但是在参数的传输方面比较弱这点需要注意,在android应用开发中同样也可以使用,使用方式和上面的完全一致。
- java中xmlrpc的使用
- XMLRPC 服务端和客户端的JAVA使用
- VC中使用XMLRPC
- python中使用xmlrpc
- xmlrpc的使用
- 简单的java xmlrpc
- xmlrpc的java小例子
- xmlrpc使用
- VC中使用XMLRPC提供接口(XMLPRC++)
- xmlrcp学习 - python中使用xmlrpc
- VC中使用XMLRPC提供接口(XMLPRC++)
- Python中使用XMLRPC(入门)
- python xmlrpc中遇到的问题
- 使用apache-xmlrpc-3.1.3 编写Java XML-RPC Client
- 使用apache-xmlrpc-3.1.3 编写Java XML-RPC Client
- PHP XMLRPC 使用示例
- XmlRpc with C#/Java
- 从xmlrpc++ 的Method中获取客户信息
- tupian5
- (二)Onvif对接RTSP流
- UISegmenControl 的字体颜色,选中色,边框颜色的修改
- xcode7.0https安全协议
- 从源文件到目标文件
- java中xmlrpc的使用
- 【MATLAB 学习笔记】 SimMechanics 流程攻略(3)
- 手机淘宝构架演化实践及优化
- python:使用pyquery分析html
- uva 11181
- 白化(Whitening):PCA vs. ZCA
- Android Context 上下文 你必须知道的一切
- mysql中timestamp与datetime区别
- bbb