【问题标题】:URLConnection timeout error works fine on local, but not on dev serverURLConnection 超时错误在本地工作正常,但在开发服务器上却不行
【发布时间】:2014-01-09 19:40:45
【问题描述】:

出于某种原因,我从下面的代码中收到了java.net.ConnectException: Connection timed out。它在我的本地计算机上运行良好,我可以通过本地和开发服务器上的浏览器访问它,但是在开发服务器上尝试读取它时出现此错误。

public List<NodeMap> downloadFile(String fileUrl) {

    InputStream inputStream = null;

    try {

        URL url = new URL(fileUrl);
        URLConnection con = url.openConnection();
        con.setConnectTimeout(60000);
        con.setReadTimeout(60000);
        inputStream = con.getInputStream();

        CSVReader csvReader = new CSVReader(new InputStreamReader(inputStream),',','"');

        return iterateRows(csvReader);
    }
    catch (IOException e) {
        LOG.error("Node mapping file", e);
    }
    finally {
        IOUtils.closeQuietly(inputStream);
    }

    return null;
}

全栈

java.net.ConnectException: Connection timed out
        at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.7.0_21]
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339) ~[na:1.7.0_21]
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200) ~[na:1.7.0_21]
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182) ~[na:1.7.0_21]
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:391) ~[na:1.7.0_21]
        at java.net.Socket.connect(Socket.java:579) ~[na:1.7.0_21]
        at sun.net.NetworkClient.doConnect(NetworkClient.java:175) ~[na:1.7.0_21]
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:378) ~[na:1.7.0_21]
        at sun.net.www.http.HttpClient.openServer(HttpClient.java:473) ~[na:1.7.0_21]
        at sun.net.www.http.HttpClient.<init>(HttpClient.java:203) ~[na:1.7.0_21]
        at sun.net.www.http.HttpClient.New(HttpClient.java:290) ~[na:1.7.0_21]
        at sun.net.www.http.HttpClient.New(HttpClient.java:306) ~[na:1.7.0_21]
        at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:995) ~[na:1.7.0_21]
        at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:931) ~[na:1.7.0_21]
        at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:849) ~[na:1.7.0_21]
        at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1299) ~[na:1.7.0_21]

【问题讨论】:

  • 可能在您的开发服务器上的浏览器配置中还有一个代理配置,这就是它在浏览器而不是程序中工作的原因?
  • 关闭 csvReader(它也应该关闭 inputStream)
  • 我不知道代理配置是什么意思。
  • 意思是,你的浏览器不直接访问web服务器。在浏览器设置中,您可以添加代理服务器 IP,然后所有请求都将通过该 IP 进行路由。如果您使用的是 chrome,请转到设置 -> 高级设置 -> 网络 -> 更改代理设置 -> 局域网设置。如果那里配置了代理,也应该在您的代码中使用它。另外,您正在访问的 URL,它在哪里运行?本地还是开发?您是否在本地计算机上尝试过代码并成功运行?
  • 我的浏览器中没有代理。

标签: java spring tomcat timeout urlconnection


【解决方案1】:

看起来这是一个 DNS 问题。我使用了 url 的内部 IP,它成功了!

【讨论】:

    猜你喜欢
    • 2016-11-27
    • 2014-12-20
    • 1970-01-01
    • 1970-01-01
    • 2011-11-11
    • 2013-09-20
    • 2021-09-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多