2015-04-06 231 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");