从HttpServletRequest中获取body

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从HttpServletRequest中获取body相关的知识,希望对你有一定的参考价值。

参考技术A 注意点是, 只能获取一次body

如果已经有@RequestBody参数去接body,那么再从request中获取body就会有stream.close的异常

正常从流中读取就行了,有多种方式,以下列举一种

private static String getBody(HttpServletRequest request)throws BusinessException

    try (InputStream is = request.getInputStream())

        return IOUtils.toString(is,StandardCharsets.UTF_8);

    catch (IOException ex)

        log.error("read http request failed.", ex);

   

如何从 HttpServletRequest 获取完整的 url? [复制]

【中文标题】如何从 HttpServletRequest 获取完整的 url? [复制]【英文标题】:How to get the full url from HttpServletRequest? [duplicate] 【发布时间】:2014-07-04 18:24:29 【问题描述】:

好的,我有这些代码:

HttpServletRequest httpRequest = (HttpServletRequest) request;
String requestQueryString = httpRequest.getQueryString();
System.out.println(requestQueryString);

打开网址“http://127.0.0.1:8888/MyProject.html?gwt.codesvr=127.0.0.1:9997?_escaped_fragment_=home”时,

打印出来了:

 gwt.codesvr=127.0.0.1:9997?_escaped_fragment_=home

该网址缺少http://127.0.0.1:8888/MyProject.html? 部分。

如何解决?

【问题讨论】:

阅读HttpServletRequest的javadoc。都在里面。 它没有 getFullURL,我们必须构建单独的部分,但我正在寻找可以完成这项工作的 1 行代码 检查这篇文章这个问题似乎是重复的,..***.com/questions/2222238/… 【参考方案1】:

应该是

httpRequest.getRequestURL() + "?" + httpRequest.getQueryString()

打印

http://127.0.0.1:8888/MyProject.html?gwt.codesvr=127.0.0.1:9997?_escaped_fragment_=home

【讨论】:

如果网址是“xcd.com#!br”,那么您的代码可以正常工作吗? @tum #... 不应该在请求中发送。仅供客户端使用。 片段未在 HTTP 标头中发送:blog.httpwatch.com/2011/03/01/…

以上是关于从HttpServletRequest中获取body的主要内容,如果未能解决你的问题,请参考以下文章

从 HttpServletRequest 获取 AsyncContext

从 HttpServletRequest 获取 XML 并用于端点

如何从 HttpServletRequest 获取完整的 url? [复制]

SpringBoot任意位置获取HttpServletRequest对象

无法从 HttpServletRequest 获取数据

如何从 HttpServletRequest 获取请求 url [重复]