HTTP 方法名称必须是令牌问题

问题描述

我有一个 Spring Boot 应用程序,为此我编写了一堆集成测试,他们使用 RestAssured 来促进 REST 层交互。 以下是我测试中 RestAssured 设置的示例:

@Before
public void restAssuredSetup() {
    RestAssured.port = getPort();
    RestAssured.baseURI = "http://localhost";
}

我的测试工作正常,一切正常,但是当我在进行一些重构工作后重新运行整个测试套件时,它开始失败:

2021-04-28 20:35:37.097  INFO [] 31959 --- [o-auto-1-exec-1] o.apache.coyote.http11.Http11Processor   : Error parsing HTTP request header
 Note: further occurrences of HTTP request parsing errors will be logged at DEBUG level.
java.lang.IllegalArgumentException: Invalid character found in method name [0x83\uD821\uDD580xc70xbc0xe50xaf0x9e0xe70x890xaa0xec0xb90xad0xee0xbe0xe20x840x840xea0xba0x9d0xe30xbf0x98...]. HTTP method names must be tokens
    at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:413)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:261)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1590)
    at org.apache.tomcat.util.net.socketProcessorBase.run(SocketProcessorBase.java:49)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    at java.base/java.lang.Thread.run(Thread.java:830)
HTTP/1.1 400 

请注意此行为的另一个特殊方面:如果我从 IDE 进入调试模式,测试将通过 50% 以上的时间。

我也从 Maven 运行了我的测试套件,在那里看到了同样的错误

在这里一无所知。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)