Java HTTPS连接被拒绝

时间:2015-04-06 09:49:16

标签: http https

我需要从网页收集内容。我尝试使用此代码执行此操作:

try {
    System.setProperty("http.proxySet", "true");
    System.setProperty("http.proxyHost", "proxy");
    System.setProperty("http.proxyPort", "port");

    Authenticator.setDefault(new Authenticator() {
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication ("Login", "Password".toCharArray());
        }
    });

    URL u = new URL(“https://link/”); 
    URLConnection c = u.openConnection();

    BufferedReader in = new BufferedReader(new InputStreamReader(c.getInputStream()));
    String inputLine = "";
    while ((inputLine = in.readLine()) != null) {
        System.out.println(inputLine);
    }
    in.close();
    inputLine = "";
    return inputLine.getBytes();
    }
catch(Exception e) {e.printStackTrace();}
return new byte[0];

如果链接包含“http://”,它可以正常工作,但如果链接包含“https://”异常发生在此行:

BufferedReader in = new BufferedReader(new InputStreamReader(c.getInputStream()));

出现此错误:

java.net.ConnectException: Connection refused
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:579)
at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:618)
at sun.security.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:160)
at sun.net.NetworkClient.doConnect(NetworkClient.java:180)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:432)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:527)
at sun.net.www.protocol.https.HttpsClient.<init>(HttpsClient.java:275)
at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:371)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:191)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:932)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:177)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1300)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:254)
at HTTPtest.main(HTTPtest.java:82)

如果有人知道,请指导我解决问题。

1 个答案:

答案 0 :(得分:0)

我添加了https的系统属性。

System.setProperty("https.proxySet", "true");
System.setProperty("https.proxyHost", "proxy");
System.setProperty("https.proxyPort", "port");
相关问题