首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HttpsURLConnection忽略setSSLSocketFactory

HttpsURLConnection忽略setSSLSocketFactory
EN

Stack Overflow用户
提问于 2014-09-07 12:54:30
回答 1查看 858关注 0票数 4

我正在尝试根据How do a send an HTTPS request through a proxy in Java?使用代理访问https网页

但是我遇到了一个奇怪的问题: HttpsURLConnection忽略了setSSLSocketFactory方法。以下是我的代码:

代码语言:javascript
复制
HttpsURLConnection connection = (HttpsURLConnection) new URL("https://www.google.com").openConnection();
connection.setSSLSocketFactory(new SSLTunnelSocketFactory("127.0.0.1", 8089));

这是SSLTunnelSocketFactory类:

代码语言:javascript
复制
class SSLTunnelSocketFactory extends SSLSocketFactory {
    public SSLTunnelSocketFactory(String proxyIpAddress, int proxyPort) {
        System.out.println("calling SSLTunnelSocketFactory");
    }
    @Override
    public Socket createSocket(Socket s, String host, int port, boolean autoClose) throws IOException, UnknownHostException {
        System.out.println("calling createSocket");
    }

    @Override
    public Socket createSocket(String s, int i) throws IOException,
            UnknownHostException {
        throw new NotImplementedException();
    }

    @Override
    public Socket createSocket(String s, int i, InetAddress inetAddress,
                               int i2) throws IOException,
            UnknownHostException {
        throw new NotImplementedException();
    }

    @Override
    public Socket createSocket(InetAddress inetAddress,
                               int i) throws IOException {
        throw new NotImplementedException();
    }

    @Override
    public Socket createSocket(InetAddress inetAddress, int i,
                               InetAddress inetAddress2,
                               int i2) throws IOException {
        throw new NotImplementedException();
    }

    @Override
    public String[] getDefaultCipherSuites() {
        throw new NotImplementedException();
    }

    @Override
    public String[] getSupportedCipherSuites() {
        throw new NotImplementedException();
    }
}

下面是输出:

代码语言:javascript
复制
calling SSLTunnelSocketFactory
Exception in thread "main" java.lang.RuntimeException: java.net.ConnectException: Connection timed out: connect

您可以看到"calling createSocket“没有打印出来,并且发生了超时异常。这意味着setSSLSocketFactory方法被忽略,这是不应该发生的。

你能帮我解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2014-09-07 13:37:22

似乎需要设置connection.setDoInput(true);connection.setDoOutput(true);

请参阅此解决方案-https://community.oracle.com/thread/1536034?start=0&tstart=0

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25707190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档