java post xml数据,Java Post Xml问题

一般POST或GET中的数据的都是key=value键值对形式。其实POST可以更强大,我们可以直接POST一段XML。

Java 的 Servlet得到这一段XML有两种方法:

1、request.getReader()得到一个BufferedReader;

2、request.getInputStream()得到一个ServletInputStream得到XML数据

两种方法其实是一样的,第一种方法只是对第二种方法的简单包装。

如果POST XML的URL是这样

http://www.example.com/posttest?api=login

就要小心了。

如果你先执行String api = request.getParameter(“api”)可以得到api=login。但如果这时再进行request.getReader()/request.getInputStream()就不能得到XML,只会得到空字符串。

猜想:

可能是request.getParameter(“api”)时做了一些参数校验操作,把所有不是键值对的参数过滤掉,有时间看一下源码。

解决方法也很巧妙:

既然执行request.getParameter(“api”)会过滤掉XML,我就先取得XML数据,最后再执行request.getParameter(“api”)。

HttpClient 3.* 发送XML方法:

用HttpClient来做一些测试是很常见的,下面献上代码:

HttpClient client = new HttpClient();

//设置超时是一个好习惯

client.getHttpConnectionManager().getParams().setConnectionTimeout(3000);

PostMethod post = new PostMethod(KUAIPAN_URL + api);

// 指定请求内容的类型

post.setRequestHeader("Content-type", "text/xml; charset=UTF-8");

data = "xml-string"

RequestEntity entity = new StringRequestEntity(data, "text/xml", "UTF-8");

post.setRequestEntity(entity);

client.executeMethod(post);

System.out.println(post.getResponseBodyAsString());

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值