文章目录

java获取接口请求参数GET请求POST请求

java获取接口请求参数

GET请求

public static String getParams(HttpServletRequest request) {

if (request == null) {

return "";

} else {

String method = request.getMethod();

if (RequestMethod.GET.name().equals(method)) {

Map params = Maps.newHashMap();

Map webParamMap = request.getParameterMap();

if (webParamMap != null) {

params.putAll(webParamMap);

}

return MapUtils.isEmpty(params) ? "" : JSON.toJSONString(params);

} else {

return getPostParam(request);

}

}

}

POST请求

有一定经验的都知道,如果我们在Filter中读取了HttpServletRequest或者HttpServletResponse的流,就没有办法再次读取了,这样就会造成请求异常。所以,我们需要借助 Spring 提供的ContentCachingRequestWrapper和ContentCachingRequestWrapper实现数据流的重复读取。

我们编写一个过滤器:

@Component

public class RequestWrapperFilter extends OncePerRequestFilter {

@Override

protected void doFilterInternal(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, FilterChain filterChain) throws ServletException, IOException {

filterChain.doFilter(new ContentCachingRequestWrapper(httpServletRequest), httpServletResponse);

}

}

根据request获取post请求参数

private static String getPostParam(HttpServletRequest request) {

ContentCachingRequestWrapper wrapper = (ContentCachingRequestWrapper) request;

return StringUtils.toEncodedString(wrapper.getContentAsByteArray(), Charset.forName(wrapper.getCharacterEncoding()));

}

文章来源

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: