使用spring4.0的框架,重新定义messageconverter解析类,只加了一个自定义的jackson解析模型,直接copy MappingJackson2HttpMessageConverter类,在
private Object readJavaType(JavaType javaType, HttpInputMessage inputMessage) {
try {
if(inputMessage.getBody().available() == 0)
{
return null;
}
return this.objectMapper.readValue(inputMessage.getBody(), javaType);
} catch (IOException var4) {
throw new HttpMessageNotReadableException("Could not read JSON: " + var4.getMessage(), var4);
}
}
中重新定义一段代码,红色部分,我们看inputMessage.getBody()
发现到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,所以这里就获取不到字节流
所以重点是servlet的request的inputstream只能被读一次,馹
ServletServerHttpRequest getinputstream获取不到字节数据
猜你喜欢
转载自wjg-java.iteye.com/blog/2338519
今日推荐
周排行