也就是这种:
HTTP/1.1 200 OK
Date: Mon, 10 Jul 2021 15:50:06 GMT
Content-Length: 256
Content-Type: text/html
1
nvkou 2021-07-09 05:21:43 +08:00 via Android
到 controller 不都是 serverlet request 吗。全都包装好的
|
2
lululau 2021-07-09 07:38:34 +08:00 via iPhone
Spring boot 和 http 请求有啥关系。。。
|
3
ljhrot 2021-07-09 08:19:37 +08:00 via Android
不如说说你为什么需要获取 HTML 请求报文?
|
4
qwerthhusn 2021-07-09 08:31:28 +08:00 1
这个是响应的一部分,跟请求体有毛关系。
建议买《图解 TCP/IP 》、《图解 HTTP 》和《图解密码技术》三本很浅显易懂的“科普”书扫盲 |
5
lybcyd 2021-07-09 08:39:25 +08:00
这个是 Response 吧。如果你用的是 ajax,直接浏览器就能看。如果你知道自己需要获取请求属性,RequestEntity 或者 HttpServletRequest 都有 api 能看。
|
6
unco020511 2021-07-09 08:57:01 +08:00
这是响应报文啊
|
7
huang119412 2021-07-09 09:01:43 +08:00
http 协议分为状态行,header 和 body,request 对象可以获取所有 header,根据 Content-Type 不同,request 也可以获取所有 body,但是 body 是 raw ( application/json 之类)流形式 request 只能解析一次。request 也可以获取 requestURI,这样可以自己封装还原。
当然可能也有日志配置之类直接能显示。 最简单的是自己用基于 netty 的 http 服务器, http1.1 本来就是字符串明文,直接打印就可以了 |
8
chendy 2021-07-09 09:02:17 +08:00
这是响应啊。。。
Spring Boot 和这玩意没关系,要看底层用的啥,一般都是 servlet,拿到的东西也都是解析出来的 想要拿什么就去拿,想用什么格式拼就拼 |
9
jimmyismagic 2021-07-09 09:08:56 +08:00
|
10
Elietio 2021-07-09 09:15:27 +08:00
@jimmyismagic 拦截器,注意如果是 post 请求 requestBody 需要拷贝一下流不能直接读取
|
11
qwerthhusn 2021-07-09 09:49:02 +08:00
@jimmyismagic 用 Filter,然后 Filter 里面用 getInputStream 读取本次请求所有内容,可以保存到文件,打印到日志干嘛都行。。。然后 InputStream 不能重复读,所以继续往下派发的时候,需要用个 RequestWrapper 重新生成一个 InputStream 给后面的重新读取
|
12
SingeeKing 2021-07-09 09:53:07 +08:00 via iPhone
我就感觉这个需求很奇怪,看了下 9 楼果然是 XY 问题,建议阅读下提问的智慧
|
13
blackshadow 2021-07-09 10:09:36 +08:00
HttpServletRequest 直接获取 body 的流,外加获取 header 里的信息。 你应该是遇到 签名再 header 里,报文在 body 里的场景吧。需要验签啥的。 不用用对象接受。
|
14
0576coder 2021-07-09 11:02:45 +08:00
@jimmyismagic 直接读 body HttpServletRequest 有 API 的
|
15
szq8014 2021-07-09 13:56:10 +08:00
@SingeeKing 哈哈哈哈
|
16
jimmyismagic 2021-07-09 14:13:04 +08:00
@SingeeKing 9 楼是我,不是作者,😄
|
17
scxiazi 2021-07-09 14:34:37 +08:00
验签就是拦截器读取下 body, 往后传的时候再包装下就行了
|
18
zliea 2021-07-09 14:47:38 +08:00
1. 需要 httpservletrequest 可以重复读流
2. 然后就可以在各种地方读取不会影响现有逻辑。 |
19
changdy 2021-07-09 21:59:59 +08:00 1
最简单的 注入这个 bean , 注意下 maxPayloadLength
AbstractRequestLoggingFilter 话说 2,4 8 楼略苛刻 , 真的要说的话..spring boot 处理 http 请求的是 spring-boot-starter-web, 好像和 spring boot 有点关系吧. |
20
MidCoder 2021-07-21 13:54:26 +08:00
现在的开发真的是啥都不会呀?一上来就是 springboot,又是 springcloud 。啥 j2ee,jdbc 都不会了?原来至少 struts2 和 springmvc 还能感受一下底层,自从各种 boot 出现之后,大家应该都不知道 web.xml 里面长啥样了吧?建议还是沉下心来去看看基础,不要整天浮在各种框架之上,不然你永远不知道这个世界是怎么样的
|
21
golangLover 2021-07-26 09:15:36 +08:00 via Android
@qwerthhusn 我觉得这个是正解,遇到的都是用过滤器的,没见过用拦截器的
|