Spring集成设置内容类型为' text / xml' for int:http入站网关

时间:2015-04-14 01:00:34

标签: spring integration spring-integration

我们的客户正在我们的int:http入站网关发送一个http post请求,该网关具有以下签名: -

<int:channel id="http-Input-channel"/>
<int:channel id="http-Output-channnel"/>

<int-http:inbound-gateway id="HttpInboundGateway" 
                          supported-methods="POST,GET"
                          request-payload-type="java.lang.String"
                          request-channel="http-Input-channel"
                          reply-channel="http-Output-channnel" 
                          path="/Response.do"
                          mapped-request-headers="*"/>

<int:service-activator input-channel="http-Input-channel" ref="ResponseHandler" output-channel="http-Output-channnel" method="handleMessage"/>
</beans>

因此,我通过服务激活器中的int:inbound网关(这是ResponseHandler bean)方法handleMessage()接收消息,如下所示:

公共消息handleMessage(消息消息){}

该消息包含结果并具有pdf的base64字符串。 当我调试时,我发现邮件的编码形式和内容类型为&#39; content-type =&gt;应用程序/ x-WWW窗体-urlencoded&#39 ;. 为了获得实际的有效载荷,我必须解码导致&#39; +&#39;以客户端发送的格式替换整个XML中的空格。 如果我用&#39; +&#39;替换所有空格再次签名一切正常。我可以看到整个base64字符串pdf的正确格式,然后打开。

然而,这不是实际的修复。客户端没有向我们发送content-type =&gt; application / x-www-form-urlencoded在标题中。他们发送的内容类型=&gt; &#39;文本/ XML&#39;

我的问题是为什么int:http入站网关更改内容类型并编码结果XML.can我们将内容类型更改为&#39; text / xml&#39;在实际命中服务激活器并开始处理XML之前,在其配置中使用int http入站网关。 我厌倦了使用消息转换器,但它只是重复了内容类型并优先使用application / x-www-form-urlencoded。

你能否建议应该与int:http入站网关一起使用,以获得结果XML,其中text / xml作为内容类型,结果XML不是编码形式。我认为改变内容类型会解决问题。但是如何??

由于 dev的

0 个答案:

没有答案