hve*_*iga 5 uri http apache-camel apache-httpclient-4.x
我们正在尝试使用Apache Camel
2.16.3将一些数据推送到第三方HTTP
端点。我们正在使用HTTP4
组件。我们将uri,方法和查询参数设置为消息中的标头。但是,端点包含一个下划线(_
),并且我们得到了如下异常:
引起原因:java.lang.IllegalArgumentException:无效的uri:https ://x_y.something.com/somePath?q_one = XXXX & q_two =YYYYY。如果要转发/桥接http端点,请在端点上启用bridgeEndpoint选项:端点[https4:// placeholder?throwExceptionOnFailure = false]
我一直在研究,看起来这_
是URI中不应该存在的内容。该网站实际上说https://x_y.something.com/somePath
无效但https://xy.something.com/somePath
有效。
由于我无法更改第三方端点,是否可以以某种方式转义下划线?如果没有,是否还有其他解决方案,或者我们需要放弃Apache Camel
吗?
编辑
如果没有看到代码示例,我无法确定根本原因是什么,但如果我理解正确的话,您正在向 akka actor 发送一个 HTTP 请求,该 akka actor 从 Camel 端点消费。我的猜测是,您可能没有正确填充标头 - 无论原始HTTP4
端点是什么样子,Exchange.HTTP_URI
标头覆盖将始终优先。例如,这工作得很好:
from("jetty:http://localhost:9090/path")
.routeId("jetty_server")
.log("${body}");
from("timer:sender?delay=3000&period=5000")
.setBody().constant("Ping!")
.setHeader(Exchange.HTTP_URI, constant("http://localhost:9090/path"))
.to("http4:x_y.something.com:9090/path?q_one=XXXX&q_two=YYYYY");
Run Code Online (Sandbox Code Playgroud)
所以我的猜测是这不是骆驼问题。