首页 > 基础资料 博客日记
完美解决 java.lang.IllegalArgumentException: Invalid character found in method name
2024-10-03 07:00:11基础资料围观681次
一、问题描述
使用注解 @PostMapping 的接口 ,入参使用注解 @RequestBody ,请求入参为JSON格式,使用 Postman 调用,接口返回500,本地调试跳不进方法,RequestBody 参数取不到值,报下面几个错误:
org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing
检查body肯定是传入了
Error parsing HTTP request header...java.lang.IllegalArgumentException: Invalid character found in method name xxxx
这个异常通常发生在HTTP请求解析过程中,当请求中的方法名(如GET、POST等)包含了非法字符时,会抛出此异常。
二、定位问题
-
检查协议是否支持或者正确,例如:用 https 替换 http,或者 http 替换 https
-
检查客户端发起的HTTP请求,确保请求方法名是合法的。合法的方法名通常包括大写的
GET
,POST
,PUT
,DELETE
,HEAD
,OPTIONS
,TRACE
,PATCH
等。 -
如果是编写代码时手动构造HTTP请求,确保方法名的生成逻辑是正确的,没有包含非法字符。检查方法名是否存在数字开头、有空格、特殊字符等情况。
-
如果是解析第三方发送的HTTP请求,确保解析库或框架能正确处理所有合法的方法名,并且有适当的错误处理机制来捕获并报告非法字符的异常。
-
如果是在Web服务器或应用服务器,如Tomcat, Jetty等,上遇到此异常,检查服务器配置是否有误,或是被安全设置导致方法名被过滤或修改。
修复这个问题需要定位到具体的HTTP请求处理的每一个过程,检查请求构造和解析的每个环节,确保方法名的合法、正确的被解析。
三、解决步骤
根据错误,查看tomcat源码
报错 Http11InputBuffer
没有发现什么问题
四、解决方案
尝试调整Postman的配置
Headers 默认参数太多了,也太大了,把 Headers 参数前面的勾都去掉,
只保留一个Content-Type: application/json ,
把 token 移到 Postman的Auth的Tab里。
或者代码中加入 @Headers(“Content-Type:application/json; charset=utf-8)
type 选 Bearer Token,输入 token ,
然后 Postman 发请求,本地调试可以跳进方法了,也能获得RequestBody 参数的值,完美解决问题。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:jacktools123@163.com进行投诉反馈,一经查实,立即删除!
标签:
相关文章
最新发布
- springboot~3.x项目中使用集成测试
- Java测试类、工具类与JavaBean对比解析
- SpringBoot-日志
- springboot~http2的支持
- 解疑释惑 - 日志体系之 slf4j + logback 组合(一)
- Web server failed to start. Port 8080 was already in use. 端口被占用
- Springboot 项目配置多数据源
- 伙伴匹配系统(移动端 H5 网站(APP 风格)基于Spring Boot 后端 + Vue3 - 05
- 剑指offer-23、搜索⼆叉树的后序遍历序列
- 一个表示金额的数字是 100000000L,这是多少米?