Conexão esgotada. Por quê?

Eu recebo uma exceção quando executo este código. Por quê?

Exceção no segmento “main” java.net.ConnectException: conexão expirada: conectar

import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; public class MainClass { public static void main(String[] args) throws Exception { System.setProperty("java.protocol.handler.pkgs", "com.sun.net.ssl.internal.www.protocol"); URL url = new URL("https://www.verisign.com/"); BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream())); String line; while ((line = in.readLine()) != null) { System.out.println(line); } in.close(); } } 

Exceção:

 Exception in thread "main" java.net.ConnectException: Connection timed out: connect at java.net.PlainSocketImpl.socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333) at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182) at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) at java.net.Socket.connect(Socket.java:525) at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:550) at com.sun.net.ssl.internal.ssl.BaseSSLSocketImpl.connect(BaseSSLSocketImpl.java:141) at sun.net.NetworkClient.doConnect(NetworkClient.java:163) at sun.net.www.http.HttpClient.openServer(HttpClient.java:394) at sun.net.www.http.HttpClient.openServer(HttpClient.java:529) at sun.net.www.protocol.https.HttpsClient.(HttpsClient.java:272) at sun.net.www.protocol.https.HttpsClient.New(HttpsClient.java:329) at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.getNewHttpClient(AbstractDelegateHttpsURLConnection.java:172) at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:801) at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:158) at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1049) at com.sun.net.ssl.internal.www.protocol.https.HttpsURLConnectionOldImpl.getInputStream(HttpsURLConnectionOldImpl.java:204) at java.net.URL.openStream(URL.java:1010) at https.ssl.MainClass.main(MainClass.java:13) 

Coisas que você deve olhar:

  • você pode ping o host?
  • você pode se conectar a http://www.verisign.com usando um navegador da web?
  • você pode se conectar ao https://www.verisign.com usando um navegador da web?
  • você pode se conectar ao http://www.verisign.com usando o seu programa?
  • você pode se conectar a qualquer coisa usando o seu programa?

As chances são de que seu problema esteja relacionado ao firewall. Meu primeiro palpite é que você não tem as variables ​​de ambiente corretas ou as propriedades do sistema Java configuradas para dizer à JVM para usar um servidor proxy local para solicitações HTTP / HTTPS de saída.