调用 Web 服务时保留原始负载
Preserve the original payload when calling a web service
我正在努力弄清楚如何保留有效负载,以便在序列中调用 Web 服务后可用。
例如在下面的序列中,在“调用”调解器触发负载更改为网络服务返回的内容之后。
我想要做的是使用从 Web 服务调用返回的数据来丰富原始负载。
非常感谢所有帮助。
<log level="full"/>
<payloadFactory media-type="xml">
<format>
<Flight xmlns="">
<location_id></location_id>
<FlightDistance/>
<Aircraft>
<AircraftAbbr/>
<LandingDistance/>
<TakeoffDistance/>
<AircraftRange/>
<AirframeHours/>
</Aircraft>
<Runways>
<Airport/>
</Runways>
</Flight>
</format>
<args>
<arg evaluator="xml" expression="get-property('OriginAirport')"/>
</args>
</payloadFactory>
<log level="full">
<property expression="get-property('OriginalPayload')" name="OriginalPayload"/>
</log>
<call blocking="true" description="">
<endpoint key="GetRunways"/>
</call>
<foreach expression="//d:Entries/d:Entry" id="feid" xmlns:d="http://ws.wso2.org/dataservice">
<sequence>
<log description="" level="full">
<property name="marker" value="marker"/>
</log>
<property expression="$body/Entry/runway_length" name="RunwayLength" scope="default" type="STRING"/>
<enrich>
<source clone="true" property="RunwayLength" type="property"/>
<target action="child" property="RunwayLength" type="property"/>
</enrich>
<log>
<property expression="get-property('RunwayLength')" name="PropertyValue"/>
</log>
</sequence>
</foreach>
使用 enrich mediator 并将有效负载存储到 属性
<enrich>
<source type="body"/>
<target type="property" property="REQUEST_PAYLOAD"/>
</enrich>
完成@Jenananthan 的回答:
- 将原始负载存储在 属性
- 调用网络服务
- 将原始负载恢复到正文:
<enrich>
<source clone="false" type="property" property="ORIGINAL_PAYLOAD"/>
<target action="replace" type="body"/>
</enrich>
我正在努力弄清楚如何保留有效负载,以便在序列中调用 Web 服务后可用。
例如在下面的序列中,在“调用”调解器触发负载更改为网络服务返回的内容之后。
我想要做的是使用从 Web 服务调用返回的数据来丰富原始负载。
非常感谢所有帮助。
<log level="full"/>
<payloadFactory media-type="xml">
<format>
<Flight xmlns="">
<location_id></location_id>
<FlightDistance/>
<Aircraft>
<AircraftAbbr/>
<LandingDistance/>
<TakeoffDistance/>
<AircraftRange/>
<AirframeHours/>
</Aircraft>
<Runways>
<Airport/>
</Runways>
</Flight>
</format>
<args>
<arg evaluator="xml" expression="get-property('OriginAirport')"/>
</args>
</payloadFactory>
<log level="full">
<property expression="get-property('OriginalPayload')" name="OriginalPayload"/>
</log>
<call blocking="true" description="">
<endpoint key="GetRunways"/>
</call>
<foreach expression="//d:Entries/d:Entry" id="feid" xmlns:d="http://ws.wso2.org/dataservice">
<sequence>
<log description="" level="full">
<property name="marker" value="marker"/>
</log>
<property expression="$body/Entry/runway_length" name="RunwayLength" scope="default" type="STRING"/>
<enrich>
<source clone="true" property="RunwayLength" type="property"/>
<target action="child" property="RunwayLength" type="property"/>
</enrich>
<log>
<property expression="get-property('RunwayLength')" name="PropertyValue"/>
</log>
</sequence>
</foreach>
使用 enrich mediator 并将有效负载存储到 属性
<enrich>
<source type="body"/>
<target type="property" property="REQUEST_PAYLOAD"/>
</enrich>
完成@Jenananthan 的回答:
- 将原始负载存储在 属性
- 调用网络服务
- 将原始负载恢复到正文:
<enrich>
<source clone="false" type="property" property="ORIGINAL_PAYLOAD"/>
<target action="replace" type="body"/>
</enrich>