我在向我的HTTP资源发送GET请求时遇到问题。我无法控制客户端请求,Spring 似乎认为他们想要执行多部分请求。但他们不这样做,他们只是在有效载荷中向我发送 JSON。
它在 POST 请求中工作正常,但在 GET 请求中我收到一个空的 LinkedMultiValueMap。我已经尝试了几种方法,但我无法禁用多部分功能。
<int:channel id="myChannel" />
<int-http:inbound-gateway request-channel="myChannel"
supported-methods="GET,POST"
path="/testResource"
request-payload-type="java.util.Map">
</int-http:inbound-gateway>
<int:service-activator ref="TestEndPoint"
method="testMethod"
input-channel="myChannel" />
<bean id="TestEndPoint" class="com.example.TestEndPoint" />
这是我的测试方法:
public Message<?> testMethod(Message<Map> message)
{
Map payload = message.getPayload();
// Do stuff with the payload, create a result...
return MessageBuilder.withPayload(result)
.setHeader(HttpHeaders.STATUS_CODE, HttpStatus.OK)
.build();
}
如何禁用多部分功能,或者有更好的方法来处理此问题?
注意:我知道此属性,但它不能解决问题:
spring.servlet.multipart.enabled=false
引用引用:
GET 请求消息中的有效负载没有定义的语义;
在 GET 请求上发送有效负载正文可能会导致某些现有的
实现拒绝该请求。
因此,您必须POST
发送有效载荷才能正常工作。