我想你想發佈到第一URL與XML作爲有效載荷。
首先,您需要使用XPath組件獲取XML標記的值,然後使用setBody將參數傳遞給代理請求(可以選擇從POST切換到GET)。
像這樣的東西應該工作:
<route>
<from uri="jetty:http://127.0.0.1:8080/myapp"/>
<setHeader headerName="subscriptionId">
<xpath resultType="java.lang.String">//subscriptionId/text()</xpath>
</setHeader>
<!-- if you need to convert from POST to GET
<setHeader headerName="CamelHttpMethod">
<constant>GET</constant>
</setHeader>
-->
<setBody>
<simple>subscriptionId=${in.headers.subscriptionId}</simple>
</setBody>
<to uri="jetty:http://127.0.0.1:8090/myapp?bridgeEndpoint=true&throwExceptionOnFailure=false"/>
</route>
您應該能夠通過命令行測試用的wget說:
$ cat 1.txt
<a>
<subscriptionId>123</subscriptionId>
</a>
$ wget --post-file=1.txt --header="Content-Type:text/xml" http://127.0.0.1:8080/myapp
你可以使用第二條途徑來測試像這樣的迴應:
<route>
<from uri="jetty:http://127.0.0.1:8090/myapp"/>
<to uri="log:mylog?level=INFO"/>
<setBody>
<simple>OK: ${in.headers.CamelHttpMethod}: ${in.headers.subscriptionId}</simple>
</setBody>
</route>
如果您將camelContext設置爲'trace',您應該會在您的瀏覽器中看到很多信息日誌處理的每一步發生了什麼:
<camel:camelContext id="camel" trace="true" xmlns="http://camel.apache.org/schema/spring">
你應該接受你以前的問題的答案。這會激勵更多的人回答這個問題。 – maximdim 2012-02-02 19:27:26
嗨maximdim,我沒有回覆我在我以前的問題上的答覆(「非常感謝!」等:))。我應該做更多的事情來結束這個話題嗎? – opstalj 2012-02-03 07:42:21
如果您對答案感到滿意,您需要將其標記爲「已接受」 - 請參閱問題左側的複選標記。 – maximdim 2012-02-03 14:50:31