有时候我们的接口请求方式为x-www-form-unlencoded,如果请求方把参数写入body,我们往往会取不到,此时需要自定义HttpServletRequest将body写入param.
1.读取body
String data = IOUtils.toString(request.getInputStream(), "utf-8");
2.自定义request
public class CustomHttpRequest extends HttpServletRequestWrapper{
//持有原request
private HttpServletRequest request;
private Map<String, String[]> customParameterMap;
public CustomHttpRequest(HttpServletRequest request) {
super(request);
this.request = request;
}
@Override
public String getParameter(final String name)
{
String[] strings = getParameterMap().get(name);
if (strings != null)
{
return strings[0];
}
return super.getParameter(name);
}
//自定义paramMap值
@Override
public Map<String, String[]> getParameterMap(){
Map<String, String[]> parameterMap = new TreeMap<String, String[]>();
parameterMap.putAll(request.getParameterMap());
parameterMap.putAll(customParameterMap);
return parameterMap;
}
@Override
public Enumeration<String> getParameterNames()
{
return Collections.enumeration(getParameterMap().keySet());
}
@Override
public String[] getParameterValues(final String name)
{
return getParameterMap().get(name);
}
public Map<String, String[]> getCustomParameterMap() {
return customParameterMap;
}
public void setCustomParameterMap(Map<String, String[]> customParameterMap) {
this.customParameterMap = customParameterMap;
}
}
此处也可以重写其他方法,实现自定义返回值。
3.实例化request并设置param
CustomHttpRequest customHttpRequest = new CustomHttpRequest((HttpServletRequest) request);
customHttpRequest.setCustomParameterMap(additionalParams);
本文暂时没有评论,来添加一个吧(●'◡'●)