Spring集成入站Http网关为POST请求分块json响应

时间:2015-11-24 17:22:47

标签: json spring-boot spring-integration

我正在尝试使用spring集成的入站http网关。以下是我的配置。

<int:channel id="requestChannel" />
<int:channel id="responseChannel" />


<int-http:inbound-gateway id="inboundEmployeeSearchRequestGateway"
    supported-methods="POST" request-channel="requestChannel"
    reply-channel="responseChannel"
    mapped-response-headers="Return-Status, Return-Status-Msg, HTTP_RESPONSE_HEADERS"
     path="/services/{parama}/{paramb}/search"
    reply-timeout="6000000000">

    <int-http:header name="parama" expression="#pathVariables.parama" />
    <int-http:header name="paramb" expression="#pathVariables.paramb" />

</int-http:inbound-gateway>



<int:service-activator id="activator"
    input-channel="requestChannel" output-channel="responseChannel"
    ref="execSearch" method="execute" requires-reply="true"
    send-timeout="6000000000" />

我的服务激活码如下:

@Service
public class ExecutionService {

    @Autowired
    private AppDao appDao;

    public SQLResponse execute(Message<?> msg) throws Exception {
        SQLResponse response = new SQLResponse();
        Map<String,String> map = new HashMap<>();
        map.put("name","test");
        response.setResult(map);
        return response;
    }
}

但是我的回答变得很糟糕,只有当我使用POST消费服务时才会发生这种情况,而GET功能完全正常。请帮忙

2 个答案:

答案 0 :(得分:0)

什么应用服务器?我只是尝试使用Tomcat和Jackson消息转换器将地图转换为JSON,它对我来说并不重要。

您使用的是哪种邮件转换器?

无论如何,分块有什么问题?

答案 1 :(得分:0)

我正在使用tomcat,该应用程序是基于Spring启动的。以下链接帮助我解决了这个问题。 http://forum.spring.io/forum/spring-projects/integration/109102-content-length-in-http-inbound-gateway-reply-channel。但我并不需要提及链接中描述的任何视图解析器。只需将 mapped-response-headers =&#34; Return-Status,Return-Status-Msg,HTTP_RESPONSE_HEADERS&#34; 更改为 mapped-response-headers =&#34;内容-in&#34; 用于入站网关