apachecamel URL使用空格转义
我有一个简单的驼峰路由,它处理传入的Http请求,然后根据资源路径路由到其他Http使用者。一切正常,但我遇到了java.net.URISyntaxException:在路径中使用空格时路径中的非法字符。 其他特殊角色似乎也能很好地发挥作用 我正在构建一个RESTful API,目前正在使用浏览器测试我的API 以下是我路线的春季DSL:apachecamel URL使用空格转义,url,apache-camel,escaping,space,apache-servicemix,Url,Apache Camel,Escaping,Space,Apache Servicemix,我有一个简单的驼峰路由,它处理传入的Http请求,然后根据资源路径路由到其他Http使用者。一切正常,但我遇到了java.net.URISyntaxException:在路径中使用空格时路径中的非法字符。 其他特殊角色似乎也能很好地发挥作用 我正在构建一个RESTful API,目前正在使用浏览器测试我的API 以下是我路线的春季DSL: <route id="API"> <from uri="jetty:http://0.0.0.0/api?matchOnUriPref
<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>
${in.header.CamelHttpPath}包含“blah1”
${in.header.CamelHttpPath}包含“blah2”
我在Camel上下文上启用了跟踪,发现CamelHttpPath已将转义字符“%20”替换为空格。我还看到了CamelHttpUri,它并没有逃脱这个特殊角色
在我的Spring DSL中,我在choice元素之前添加了以下内容:
<setHeader headerName="CamelHttpPath">
<simple>${in.header.CamelHttpUri}</simple>
</setHeader>
${in.header.CamelHttpUri}
这解决了我的问题,但我很肯定有更好的方法。我是否错过了设置某些属性,或者我的路线DSL不准确
另外,CamelHttpPath和CamelHttpUri之间有什么区别
我还应该提到,我在ApacheServiceMix 4.4.2中使用了Camel上下文,使用的Camel版本是2.8.5
提前感谢您的帮助 我想我们已经在以后的Camel版本中修复了这个问题,因为它将像Camel 2.10.4等版本一样发布。我记得当时正在进行空间修复。 由于Camel 2.8.x不再受支持,您需要自己修补此问题。
或者升级到ServiceMix 4.5.0,其中包括Camel 2.10.3。感谢您的回复。我认为服务4.5还没有向公众发布。在那之前,我将继续我的工作。