gpt4 book ai didi

java - 使用 OkHttp 连接到 HTTPS 代理

转载 作者:太空宇宙 更新时间:2023-11-03 13:06:44 28 4
gpt4 key购买 nike

我们的环境只允许 HTTPS 连接,因此它们为我们提供了一个 HTTPS 代理,这是连接到外部世界的唯一方式。我们必须通过此代理以及我们的 Java 应用程序(使用 OkHttp 作为其 HTTP 客户端)路由所有流量。

我们这样设置代理:

Authenticator proxyAuthenticator = new Authenticator() {
@Override
public Request authenticate(Route route, Response response) throws IOException {
String credential = Credentials.basic(username, password);
return response.request().newBuilder()
.header("Proxy-Authorization", credential)
.build();
}
};

return builder
.proxy(new Proxy(Proxy.Type.HTTP, new InetSocketAddress(proxyHost, proxyPort)))
.proxyAuthenticator(proxyAuthenticator)
.build();

我们使用 squid(作为 HTTP 代理)对其进行了测试。但是我们发现这在真实环境中是行不通的。因为代理是 HTTPS(SSL 或 TLS 隧道?)而不是 HTTP。

我们可以通过设置以下环境变量来强制所有其他 Linux 应用程序(例如 wget)使用 https 代理:

export https_proxy='http://domain\user:password@prox-server:port'

但 Java 应用程序无法运行,无法使用此代理路由流量。

顺便说一句,我们无法通过设置系统属性将 JVM 配置为通过代理路由所有流量 http.proxyHost , http.proxyPort , https.proxyHost , https.proxyPort

有没有什么简单直接的方法可以为 Java 应用程序设置 HTTPS 代理?

最佳答案

对于 HTTPS,您需要使用 https.proxyHost 和 https.proxyPort

https://docs.oracle.com/javase/7/docs/api/java/net/doc-files/net-properties.html

关于java - 使用 OkHttp 连接到 HTTPS 代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39268362/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com