我正在使用来自 REST 端点的数据,路由中间有一个代理。我正在本地运行 CNTLM (localhost:3128):它将在公司代理上为我进行身份验证,因此我不需要传递我的凭据。
尽管进行了多次尝试,但我一直无法让我的休息电话上班。例如,得到:
- SSLException:无法识别的 SSL 消息
- 连接握手突然终止
- 连接重置
- 你的名字,得到它
下面做了很多尝试的最简单的版本。显然(来自互联网阅读),这应该有效,但事实并非如此。
Camel 应该如何配置,尤其是 camel-http ?
注意:我调用的 REST API 使用的是 HTTPS,但不需要证书。当不涉及代理时,该代码在我的本地计算机上工作。在有代理的内网上失败
@Component
public class MyRoute extends RouteBuilder
public void configure() throws Exception {
//Tried different way to set the proxy, including inline with toD(...)
System.setProperty("https.proxyHost", "localhost");
System.setProperty("https.proxyPort", "3128");
getCamelContext().getGlobalOptions().put("http.proxyHost", "localhost");
getCamelContext().getGlobalOptions().put("https.proxyPort", "3128");
getContext().getGlobalOptions().put("https.proxyHost", "localhost");
getContext().getGlobalOptions().put("https.proxyPort", "3128");
from("timer:credentials?repeatCount=1")
.setHeader(Exchange.HTTP_METHOD, constant("POST"))
.setBody(simple(jsonAuth))
.to(baseUrlApi +"/v1/auth/tokens/?bridgeEndpoint=true")
.unmarshal().json(JsonLibrary.Jackson, AuthResponseDto.class)
.setHeader("Authorization", simple("Bearer ${body.data.accessToken.token}"))
// etc..
}
}