2015-04-06 228 views
0

我需要從網頁收集內容。我嘗試使用此代碼做到這一點:Java 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) 

如果有誰知道請指導我解決這個問題。

回答

0

我已經爲https添加了系統屬性。

System.setProperty("https.proxySet", "true"); 
System.setProperty("https.proxyHost", "proxy"); 
System.setProperty("https.proxyPort", "port");