好的,我希望这对某人有所帮助,解决方案是 2 倍。首先代理没有得到确认,由于领先的协议def,http://我只使用了IP地址和没有http://的cononical名称,并且我能够收到504网关超时错误。所以 HTTP4 端点正在工作,就像它设置的样子
http4://myhost:443/path
http4://uaa-svc-prod.app-api.aws-usw02-pr.io:443/oauth/token
我能够通过首先制作一个硬端点来使请求正常工作
<to uri="http4://uaa-svc-prod.app-api.aws-usw02-pr.io:443/oauth/token?throwExceptionOnFailure=false" />
所以端点http4通过设置覆盖
m.setHeader(Exchange.HTTP_URI, tokenUrl);
工作。
然后我尝试使用他在路由中覆盖的 XML 设置。
<log message="HTTP4 POST headers: ${headers}" loggingLevel="DEBUG"/>
<setHeader headerName="CamelHttpUri">
<simple>${header.TOKENURL}?throwExceptionOnFailure=false</simple>
</setHeader>
<to uri="http4://uaa-svc-prod.app-api.aws-usw02-pr.io:443/oauth/token?throwExceptionOnFailure=false" />
这也有效。:) 但是我仍然收到 504 网关超时错误返回。
我尝试在覆盖 URI 中使用 https:// URI
https://uaa-svc-prod.app-api.aws-usw02-pr.io/oauth/token
并且 http4:// 端点被 https:// URI覆盖,现在我得到一个 CamelHttpResponseCode=401, CamelHttpResponseText=Unauthorized
所以,它现在正在工作,快乐快乐快乐快乐......总之不要在代理设置中包含 http:// 协议定义。使用 IP 或锥形名称。
<camelContext
id="com.ge.digital.passthru.coreCamelContext"
trace="true"
xmlns="http://camel.apache.org/schema/blueprint"
allowUseOriginalMessage="false"
streamCache="true"
errorHandlerRef="deadLetterErrorHandler" >
<properties>
<property key="http.proxyHost" value="PITC-Zscaler.proxy.corporate.america.com"/>
<property key="http.proxyPort" value="80"/>
</properties>
定义 HTTP4:// 端点时,使用语法
http4:hostname[:port][/resourceUri][?options]
并且由 Exchange.HTTP_URI 在端点 def 上设置的 URI 包含您正在调用的https://myhost/path 。
这对我有用,我希望这对像我这样的新手有所帮助。感谢大家。