springmvc处理如下接口:
http://localhost:8080/webgis/vehicle/data/vehicledetail?type=1¶ms=13812345678
后台Controller代码:
@RequestMapping(value="/data/vehicledetail", method=RequestMethod.GET)
public String vehicledetail(HttpServletRequest request) throws SystemException {
Map<String, Object> resultMap = new HashMap<String, Object>();
<span></span> <span></span>String qs = request.getQueryString();
Map<String,Object> params = super.parseReqParam(request);
............
}
获取参数方法代码:
public Map<String,Object> parseReqParam(HttpServletRequest request){
// 取消对请求串的UTF-8编码,防止不同浏览器中发送请求时进行默认编码处理导致的转码失败
Map<String, Object> map = null;
try {
byte[] buffer = new byte[512];
ByteArrayOutputStream baos = new ByteArrayOutputStream();
InputStream in = request.getInputStream();
for (int len = 0; (len = in.read(buffer)) > 0;) {
baos.write(buffer, 0, len);
}
String content = new String(baos.toByteArray(), DEFAULT_ENCODING);
if(StringUtils.isNotBlank(content)){
ObjectMapper mapper = new ObjectMapper();
map = mapper.readValue(content, Map.class);
}
baos.close();
} catch (IOException e) {
e.printStackTrace();
}
return map;
}
此时,获取参数的方法返还NULL.
但是Controller修改如下代码之后是可以获取到参数type的值:
public String vehicledetail(@RequestParam("type") Integer type, HttpServletRequest request) throws SystemException {
同时如果直接用如下代码:String qs = request.getQueryString();
也可以获取get请求后面的queryString的内容。
这里有几个问题想请了解这块知识的朋友帮忙详细解答一下:
1、request.getInputStream()这个流是http请求哪个部分?
2、为什么request.getParamerter("参数名")不能获取get后面queryString的内容呢?
请不吝赐教,谢谢。
equest.getInputStream()获取的是Http请求包的包体,GET方式请求一般不包含包体,请求参数是通过URL传递的,所以会返回null。相对应的POST方式通常请求参数是以请求包体的方式传递的。
问题2,没见你代码里面哪里调用了request.getParamerter(),不过应该是可以使用的
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。