我们有一个Apache Camel(2.13.2)应用程序,它使用http4与网络服务器通信,使用NTLM进行身份验证。
端点定义为(伪):
...
.to("http4://thegreat.server.com/uri?authUsername=" + user + "&authPassword=" + pass
+ "&authenticationPreemptive=true&authMethod=NTLM&authDomain=DOMAIN&authHost=host")
.to("otherEndpoint");
只要pass
变量包含“非特殊”字符,就可以正常工作。
但是,如果pass
包含例如"abcd&def"
- Camel将把&符号作为查询参数分隔符,就像它应该的那样。
但编码&符号的url(即"abcd%26def"
)完全没有区别?
我们仍然以Camel调用端点"http://thegreat.server.com/uri?authMethod=NTLM&def="
,并使用截断的密码。
是否有一些明显的东西我们错过了,或者这看起来像一个bug?
感谢。
答案 0 :(得分:4)
请参阅Camel文档,了解如何配置端点uris
有一节介绍了密码,例如你应该使用RAW()语法。
所以它就像是
.to("http4://thegreat.server.com/uri?authUsername=" + user + "&authPassword=RAW(" + pass
+ ")&authenticationPreemptive=true&authMethod=NTLM&authDomain=DOMAIN&authHost=host")
.to("otherEndpoint");