Spring Integration HTTP禁用Get请求中的多部分

时间:2019-07-18 13:25:40

标签: spring rest http integration multipart

我在向我的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

1 个答案:

答案 0 :(得分:0)

引用Ref

  

GET请求消息中的有效负载没有定义的语义;
  在GET请求上发送有效内容正文可能会导致某些现有内容
  拒绝请求的实现。

因此,您必须在POST中发送有效负载才能正常工作。