我们的客户正在我们的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的