ServletServerHttpRequest getinputstream获取不到字节数据

使用spring4.0的框架,重新定义messageconverter解析类,只加了一个自定义的jackson解析模型,直接copy MappingJackson2HttpMessageConverter类,在
private Object readJavaType(JavaType javaType, HttpInputMessage inputMessage) {
[color=red] try {
if(inputMessage.getBody().available() == 0)
{
return null;
}[/color]
return this.objectMapper.readValue(inputMessage.getBody(), javaType);
} catch (IOException var4) {

throw new HttpMessageNotReadableException("Could not read JSON: " + var4.getMessage(), var4);
}
}
中重新定义一段代码,红色部分,我们看inputMessage.getBody()

[img]http://dl2.iteye.com/upload/attachment/0121/3172/15829f25-eb23-3245-8552-65afd0a7d2b2.png[/img]
发现到ServletServerHttpRequest的getbody
public InputStream getBody() throws IOException {
return (InputStream)(this.isFormPost(this.servletRequest)?this.getBodyFromServletRequestParameters(this.servletRequest):this.servletRequest.getInputStream());
}
看源码,只要application/x-www-form-urlencoded或者不是post,该方法就返回
this.servletRequest.getInputStream());

我在自定义类里发现inputMessage.getBody().available() == 0都是true;数据呢,
发现一个请求inputstream只能被读取一次,以后只能通过getParameterMap来获取了,我在filter里打印了inputstream,所以这里就获取不到字节流

[color=darkred][size=medium]所以重点是servlet的request的inputstream只能被读一次,馹[/size][/color]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值