当前位置:  开发笔记 > 编程语言 > 正文

当URL启动时,为什么会出现"java.net.ConnectException:Connection timed out"异常?

如何解决《当URL启动时,为什么会出现"java.net.ConnectException:Connectiontimedout"异常?》经验,为你挑选了3个好方法。

ConnectException: Connection timed out从代码中获得了一些频率.我试图点击的网址已经启动.相同的代码适用于某些用户,但不适用于其他用户.似乎一旦一个用户开始获得此异常,他们就会继续获得异常.

这是堆栈跟踪:

java.net.ConnectException: Connection timed out
Caused by: java.net.ConnectException: Connection timed out
    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.Socket.connect(Socket.java:516)
    at java.net.Socket.connect(Socket.java:466)
    at sun.net.NetworkClient.doConnect(NetworkClient.java:157)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:365)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:477)
    at sun.net.www.http.HttpClient.(HttpClient.java:214)
    at sun.net.www.http.HttpClient.New(HttpClient.java:287)
    at sun.net.www.http.HttpClient.New(HttpClient.java:299)
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:796)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:748)
    at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:673)
    at sun.net.www.protocol.http.HttpURLConnection.getOutputStream(HttpURLConnection.java:840)

以下是我的代码中的代码段:

URLConnection urlConnection = null;
OutputStream outputStream = null;
OutputStreamWriter outputStreamWriter = null;
InputStream inputStream = null;

try {
    URL url = new URL(urlBase);
    urlConnection = url.openConnection();
    urlConnection.setDoOutput(true);

    outputStream = urlConnection.getOutputStream(); // exception occurs on this line
    outputStreamWriter = new OutputStreamWriter(outputStream);
    outputStreamWriter.write(urlString);
    outputStreamWriter.flush();
    inputStream = urlConnection.getInputStream();
    String response = IOUtils.toString(inputStream);
    return processResponse(urlString, urlBase, response);
} catch (IOException e) {
    throw new Exception("Error querying url: " + urlString, e);
} finally {
    IoUtil.close(inputStream);
    IoUtil.close(outputStreamWriter);
    IoUtil.close(outputStream);
}

小智.. 81

连接超时(假设本地网络和多个客户端计算机)通常来自

a)某种类型的防火墙在简单地吃掉数据包而不告诉发送者诸如"无路由到主机"这样的事情

b)由于错误的网络配置或线路过载导致的数据包丢失

c)太多请求超载服务器

d)服务器上的少量同时可用的线程/进程导致所有线程/进程被占用.这种情况尤其发生在需要很长时间才能运行的请求中,并且可能与c)结合使用.

希望这可以帮助.



1> 小智..:

连接超时(假设本地网络和多个客户端计算机)通常来自

a)某种类型的防火墙在简单地吃掉数据包而不告诉发送者诸如"无路由到主机"这样的事情

b)由于错误的网络配置或线路过载导致的数据包丢失

c)太多请求超载服务器

d)服务器上的少量同时可用的线程/进程导致所有线程/进程被占用.这种情况尤其发生在需要很长时间才能运行的请求中,并且可能与c)结合使用.

希望这可以帮助.



2> Alexander..:

如果URL在同一台计算机上的Web浏览器中正常工作,则可能是Java代码未使用浏览器用于连接到URL的HTTP代理.



3> M Hamza Jave..:

错误消息说明了一切:您的连接超时。这意味着您的请求在某个(默认)时间范围内未得到响应。未收到响应的原因可能是以下之一:

a)IP /域或端口不正确

b)IP /域或端口(即服务)已关闭

c)IP /域花费的时间超过您的默认超时时间

d)您有防火墙阻止正在使用的任何端口上的请求或响应

e)您的防火墙阻止了对特定主机的请求

f)您的互联网连接中断

g)您的活动服务器已关闭,即在“ rest-API调用”的情况下。

请注意,您的ISP可能已设置防火墙和端口或IP阻止

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有