【问题标题】:Connection timed out. Why?连接超时。为什么?
【发布时间】:2017-10-30 02:11:49
【问题描述】:

运行此代码时出现异常。为什么?

线程“主”java.net.ConnectException 中的异常:连接超时:连接

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();
  }
}

例外:

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.<init>(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)

【问题讨论】:

  • 那么您之前采取了哪些步骤来自己解决这个问题?
  • 我认为您的连接超时。在我看来就是这样。
  • 只要 ping 站点 verisign.com 看看你能不能连接,或者它是否需要很长时间才能连接。

标签: java


【解决方案1】:

你应该看的东西:

  • 你能ping主持人吗?
  • 您可以使用网络浏览器连接到http://www.verisign.com 吗?
  • 您可以使用网络浏览器连接到https://www.verisign.com 吗?
  • 您可以使用您的程序连接到http://www.verisign.com 吗?
  • 你能用你的程序连接到任何东西吗?

您的问题很可能与防火墙有关。我的第一个猜测是您没有设置正确的环境变量或 Java 系统属性来告诉 JVM 使用本地代理服务器来处理传出的 HTTP / HTTPS 请求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-30
    • 2018-11-12
    • 2010-10-22
    • 2018-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多