servlet读取xml格式的post数据

本文详细介绍了一个使用XML进行HTTP请求和响应的过程,包括服务器端如何读取客户端发送的XML数据及客户端如何构造并发送XML数据到服务器。重点在于解决XML文件编码问题,确保数据正确传输。

服务器端代码:

rundata.getModuleInfo().setLayoutTemplate(null); HttpServletRequest request = rundata.getRequest(); HttpServletResponse response = rundata.getResponse(); PrintWriter printWriter = null; ServletInputStream sis = null; String xmlData = null; try { printWriter = response.getWriter(); // 取HTTP请求流 sis = request.getInputStream(); // 取HTTP请求流长度 int size = request.getContentLength(); // 用于缓存每次读取的数据 byte[] buffer = new byte[size]; // 用于存放结果的数组 byte[] xmldataByte = new byte[size]; int count = 0; int rbyte = 0; // 循环读取 while (count < size) { // 每次实际读取长度存于rbyte中 rbyte = sis.read(buffer); for(int i=0;i<rbyte;i++) { xmldataByte[count + i] = buffer[i]; } count += rbyte; } xmlData = new String(xmldataByte, "UTF-8");

客户端代码:

HttpClient httpClient = new HttpClient(); String xmlData = getInput(); int xmlDataLength = xmlData.getBytes("UTF-8").length; PostMethod method = new PostMethod(url); method.setRequestBody(xmlData); method.setRequestHeader("Content-type", "text/xml; charset=UTF-8"); if (xmlDataLength < Integer.MAX_VALUE) { method.setRequestContentLength(xmlDataLength); } else { method.setRequestContentLength(EntityEnclosingMethod.CONTENT_LENGTH_CHUNKED); } try { int statusCode = httpClient.executeMethod(method); System.out.println("返回码: " + statusCode); if(statusCode != HttpStatus.SC_OK) { return; } System.out.println("输出:"); System.out.println(method.getResponseBodyAsString()); } catch (IOException e) { e.printStackTrace(); } finally { method.releaseConnection(); }

说明:

文件xml文件必须是utf-8形式,否则会有编码问题

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值