Invalid character found in the request target

本文介绍了在使用Swagger2进行API测试时遇到的一个问题,即使用@RequestBody注解接收JSON数据,但请求方式错误地设置为GET,导致报错。错误信息指出请求目标中存在无效字符。作者首先尝试通过配置Tomcat解决,后来发现是HTTP方法应为POST而非GET。修复此错误后,问题得到解决。
摘要由CSDN通过智能技术生成

先说结论
        Swagger2测试

        使用@RequestBody注解,接收JSON数据时

        请求方式依然是GET请求

Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986

  • 在请求目标中发现无效字符

     1. 解决思路

        写了个接口,然后出现上面情况,百度了一下说问题出在高版本Tomcat中会不识别{}括号。

        随便抄了个方法,跑一下,可行,不报错了。

@Configuration
public class TomcatConfig {
 
    @Bean
    public TomcatServletWebServerFactory webServerFactory() {
        TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
        factory.addConnectorCustomizers((Connector connector) -> {
            connector.setProperty("relaxedPathChars", "\"<>[\\]^`{|}");
            connector.setProperty("relaxedQueryChars", "\"<>[\\]^`{|}");
        });
        return factory;
    }
}

     2. 实际办法

        可是越想越不对,Swagger2也使用了好多次,从来没有遇到过这个问题啊!再检查一下, 发现POST方法,httpMethod,写成了GET。这也就解释了,为什么在测试时候报错了,方法中需要接口JSON,增加了@RequestBody,入参需要是JSON,请求方式依然是GET请求。所以提示找不到JSON的{}了问题,修改成httpMethod = "POST"后,删除上面配置的TomcatConfig后,重试,问题解除。

        @ApiOperation(value = "xxx",notes = "xxx",httpMethod = "GET")
        @PostMapping("/doLogin")

       

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值