Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用OkHttp连接到HTTPS代理_Java_Ssl_Okhttp_Http Proxy_Tunneling - Fatal编程技术网

Java 使用OkHttp连接到HTTPS代理

Java 使用OkHttp连接到HTTPS代理,java,ssl,okhttp,http-proxy,tunneling,Java,Ssl,Okhttp,Http Proxy,Tunneling,我们的环境只允许HTTPS连接,所以他们为我们提供了HTTPS代理,这是连接外部世界的唯一方式。我们必须通过这个代理以及我们的Java应用程序(一个使用OkHttp作为HTTP客户端的应用程序)路由所有流量 我们已按如下方式设置代理: Authenticator proxyAuthenticator = new Authenticator() { @Override public Request authenticate(Route route, Response respons

我们的环境只允许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应用程序不工作,无法使用此代理路由流量

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


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

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


也许这是给你的:@petermm,正如我所说,它不起作用。