我有一個簡單的駱駝路由處理傳入的Http請求,然後根據資源路徑路由到其他Http使用者。一切工作正常,但我擊中了java.net.URISyntaxException:在路徑中使用空間時路徑中的非法字符。 其他特殊字符似乎工作正常。阿帕奇駱駝URL與空間轉義
我正在構建一個RESTful API並且正在使用瀏覽器來測試我的API。
這裏是我的路線的春DSL:
<route id="API">
<from uri="jetty:http://0.0.0.0/api?matchOnUriPrefix=true"/>
<bean ref="basicAuthBean"/>
<choice>
<when>
<simple>${in.header.CamelHttpPath} contains 'blah1'</simple>
<to uri="http://localhost:10001/api?bridgeEndpoint=true&throwExceptionOnFailure=false"/>
</when>
<when>
<simple>${in.header.CamelHttpPath} contains 'blah2'</simple>
<to uri="http://localhost:10002/api?bridgeEndpoint=true&throwExceptionOnFailure=false"/>
</when>
</choice>
</route>
我啓用了駱駝語境跟蹤,發現CamelHttpPath已經替換爲空轉義字符「%20」。我也看到有沒有逃過特殊角色的駱駝。
正如我在春天DSL一劈我添加選擇元素之前如下:
<setHeader headerName="CamelHttpPath">
<simple>${in.header.CamelHttpUri}</simple>
</setHeader>
這解決了我的問題,但我敢肯定有一個更好的方式來做到這一點。我錯過設置一些屬性還是我的路由DSL不準確?
此外,CamelHttpPath和CamelHttpUri有什麼區別?
我還應該提到,我在Apache ServiceMix 4.4.2中使用Camel上下文,使用的Camel版本是2.8.5。
在此先感謝您的幫助!
感謝您的回覆。我認爲Service 4.5尚未公開發布。直到那時,我將與我的解決方法一起生活。 – bsam 2013-02-17 01:10:06