web service integration - how to access request Object in response class?
我们正在使用http入站网关
<int-http:outbound-gateway request-channel="RequestChannel" url="${test.url}" expected-response-type="java.lang.String" http-method="POST" reply-channel="ResponseChannel"></int-http:outbound-gateway>
我有一个类似的要求,我将请求有效负载添加到标头中并进行Web服务调用。我在请求中有敏感信息,以及当我通过网络传输数据时它将有多安全。我可以遵循的方法来访问请求对象。
答案 0 :(得分:0)
这种情况是,默认情况下,此类标头不通过Web Service调用传输。
如果您未在以下位置映射自定义标头名称:
<xsd:attribute name="mapped-request-headers" type="xsd:string">
<xsd:annotation>
<xsd:documentation><![CDATA[
Comma-separated list of names of SOAP Headers to be mapped from the SOAP request into the MessageHeaders.
This can only be provided if the 'header-mapper' reference is not being set directly. The values in
this list can also be simple patterns to be matched against the header names (e.g. "foo*" or "*foo").
]]></xsd:documentation>
</xsd:annotation>
</xsd:attribute>
它不会包含在目标SOAP请求中,也不会包含在HTTP标头中。
因此,在执行Web Service调用之前将敏感数据存储在标头中,并在收到回复后在下游还原该数据是完全安全的。
尽管您绝对需要考虑使用该头之后将其删除。其他一些组件可能不会限制标头的发送。
更新
在<int-http:outbound-gateway>
的情况下,默认情况下有一个DefaultHttpHeaderMapper
,它仅配置为映射一些基于请求的标准HTTP标头。默认情况下,不映射最终用户自定义标头。基本上与我对Web服务所述的方法相同。