我的项目面临一个非常奇怪的问题。它与使用spring react webclient bulider的rest API调用有关。它在本地和产品上也可以正常工作,但是在向同一个端点发出3或4个请求后,异常地给出了以下错误。 “ org.springframework.web.server.MethodNotAllowedException:405 METHOD_NOT_ALLOWED”不支持请求方法'T'“ 这是有效的异常,因为方法将Get方法转到“ T”,将Post方法转到“ ST”。我无法理解为什么两个起始字符从方法名称处被截断
请帮助我解决此错误。
答案 0 :(得分:0)
OP 和我一定是唯一经历过这种情况的人,老实说我不知道根本原因,但这是我的情况和解决方法。
对我来说,我在 docker 中运行了 2 个服务。一个服务会向另一个服务发出请求。第一个请求总是成功,但随后的请求总是失败。一段时间后,新的请求再次成功。
我推测它一定与持久连接有关。我正在使用 OkHttpClient 库(3.14.9)发出请求。接收请求的服务正在运行 spring webflux,但我不认为服务是问题所在。我可以在第一个服务的容器内使用 curl 向它发出重复的成功请求。
OkHttpClient 默认使用 keep-alive 连接。您可以通过将 Connection
标头设置为 close
来指定不希望保持连接活动的单个请求。一旦我这样做了,所有请求都可以再次运行。
无论出于何种原因,保持活动连接的重用并没有发送整个请求。它总是截断方法的前 2 个字符,这就是 Request method 'T' not supported
的原因。也许第一个请求没有正确结束并且吃掉了第二个请求的前 2 个字符。我不知道根本原因。可能是 OkHttpClient 的一个错误