在Camel中,我使用http4组件在远程服务器上发出REST请求。
组件documentation声明应将凭据放在端点上的选项中,如下所示:
https4://myremote.server.com/?authUsername=xxx&authPassword=yyy
在其他环境中使用带有“+”字符的密码之前,这个方法一直运行良好。我们注意到,“+”字符在服务器中以空格的形式传输,这会产生一个错误。通过在Camel文档中更深入地搜索,我们发现a page解释了一个“RAW”函数的用法,如下所示:
https4://myremote.server.com/?authUsername=xxx&authPassword=RAW(yyy)
以保持密码不变。
不幸的是,此功能仅在Camel 2.11版本中引入,目前我们不打算升级到ServiceMix 5.1.x。
我们目前使用的是serviceMix 4.5.x,camel版本是2.10.7。
我在路线中试过这些(一个接一个):
.setHeader("Authorization", "Basic {base64Hash}")
.setHeader("Authorization", "Basic {base64Hash}")
个.setProperty(HttpHeaders.AUTHORIZATION, "Basic {base64Hash}")
.setHeader(HttpHeaders.AUTHORIZATION, "Basic {base64Hash}")
但是远程服务器向我发送了401(未授权)。
问题是:除了在端点上使用选项之外,是否还有其他方法可以发送http4组件的凭证?
2条答案
按热度按时间ovfsdjhp1#
我终于找到了一种方法,我遇到的问题是服务器需要一个额外的参数,称为:
X-Forwarded-Proto
,则以下方法可以很好地代替在端点选项中传递凭据:之后,使用bean或处理器来生成Base64哈希就很容易了。
bybem2ql2#
请将密码中的
+
字符替换为Camel端点URI中的%2B
,这样应该可以使用。