Java 错误 Java.Net.ConnectException: Connection Timed Out
ava.net 包具有许多功能,可用于与互联网上的任何服务器建立连接,因此可用于进行 GET 或 POST 等其余调用。
本篇文章将重点介绍如何使用此包进行基本的网络调用以及可能面临和解决的错误。
在 Java 中使用 java.net 进行网络调用
进行网络调用是 Java 开发人员每天面临的最重要的事情之一。 正确地进行网络调用可以使应用程序更加健壮并提供良好的用户体验。
java.net 包有许多与网络调用相关的函数。
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
class Main {
public static void main(String args[]) throws Exception{
HttpURLConnection.setFollowRedirects(true); // Defaults to true
String url = "https://www.delftstack.com/howto/java/";
URL request_url = new URL(url);
HttpURLConnection http_conn = (HttpURLConnection) request_url.openConnection();
http_conn.setConnectTimeout(100000);
http_conn.setReadTimeout(100000);
http_conn.setInstanceFollowRedirects(true);
System.out.println(String.valueOf(http_conn.getResponseCode()));
}
}
上面的代码段向 url 变量发出 GET 请求,然后打开连接。 如果一切正常,它会打印出响应代码 200。
但是,尝试次数过多后,将无法连接到服务器,并且可能会抛出 IOException。
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
class Main {
public static void main(String args[]) throws Exception{
URL url = new URL("https://reqres.in/api/users");
HttpURLConnection http = (HttpURLConnection) url.openConnection();
http.setRequestMethod("POST");
http.setDoOutput(true);
http.setRequestProperty("Content-Type", "application/json");
http.setRequestProperty("Content-Length", "0");
String body = "{\"name\": \"morpheus\",\"job\": \"leader\"}";
http.getOutputStream().write(body.getBytes("UTF8"));
System.out.println(http.getResponseCode() + " " + http.getResponseMessage());
http.disconnect();
}
}
上面的代码段向示例 REST API 服务器发出 POST 请求并返回响应。
Java 中的 java.net 包错误
在Java中进行网络调用时可能会出现连接超时问题。 解决这些问题有时类似于为什么某个 URL 无法在浏览器上打开。
它们可能是由于:
- URL 的 IP/域不正确。
- 该IP/域名对应的服务器宕机了。
- 防火墙可能阻止了请求,或者互联网位于代理后面。
- 服务器可能已将该 IP 列入黑名单。
例如:
import java.io.*;
import java.net.URL;
import java.net.URLConnection;
class Main {
public static void main(String args[]) throws Exception{
URLConnection urlConnection = null;
OutputStream outputStream = null;
URL url = new URL("http://google.com");
urlConnection = url.openConnection();
urlConnection.setConnectTimeout(1);
}
}
输出:
Exception in thread "main" java.net.SocketTimeoutException: Connect timed out
at java.base/java.net.Socket.connect(Socket.java:648)
at java.base/sun.net.NetworkClient.doConnect(NetworkClient.java:177)
at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:474)
at java.base/sun.net.www.http.HttpClient.openServer(HttpClient.java:569)
at java.base/sun.net.www.http.HttpClient.<init>(HttpClient.java:242)
...
因此,当无法打开到套接字或 URL 的适当连接,并且端口组合或超时不足以连接到 URL 时,会抛出上述异常,在这种情况下受到 urlConnection.setConnectTimeout(1);
的限制。
可以尝试以下方法来避免 Java 中的连接超时错误。
-
通过
setFixedLengthStreamingMode()
设置内容长度。 - 如果 URL 连接在第一次尝试失败,则重试连接。
-
通过
setConnectTimeout
函数将连接限制增加到更高的数量。
相关文章
Java 异常 Java.IO.IOException: Connection Reset by Peer
发布时间:2023/07/16 浏览次数:177 分类:Java
-
本篇文章介绍 Java 的 java.io.IOException: Connection reset by peer。Java 中 java.io.IOException: Connection reset by peer IOException 表示读取或写入文件或访问文件系统时可能发生的任何输入输出异常。
Java 中错误 java.net.SocketException: Software Caused Connection Abort: Recv F
发布时间:2023/07/14 浏览次数:75 分类:Java
-
本篇文章介绍如何解决 Java 中的以下错误:java.net.SocketException: Software caused connection abort: recv failed SocketException 是 IOException 的子类,当我们尝试访问套接字时会发生 IOException。
Java 错误 Java.Net.SocketTimeoutException: Connection Timed Out
发布时间:2023/07/13 浏览次数:161 分类:Java
-
在本篇文章中,我们将讨论 java.net.SocketTimeoutException: Connection timed out。 但首先,让我们仔细看看套接字和超时的概念。Java 中的套接字 两个计算机应用程序之间的逻辑链接可能有多个端点,其
修复 Java.Net.SocketException: Connection Reset 错误
发布时间:2023/07/13 浏览次数:202 分类:Java
-
今天的文章将讨论Java中可能出现的 java.net.SocketException: Connection Reset 错误的原因和解决方案。 最后,我们将看到如何消除 Java 的 java.net.SocketException:Connection Reset错误。
Java 错误 java.net.ConnectException
发布时间:2023/07/12 浏览次数:171 分类:Java
-
本篇文章介绍了 Java 中的 java.net.ConnectException 错误。Java 中的 java.net.ConnectException 错误 java.net.ConnectException 是使用网络时最常见的异常。 它主要发生在客户端、应用程序和服务器之间建立 TCP 连
Minecraft 上 An Existing Connection Was Forcibly Closed by the Remote Host 错误
发布时间:2023/07/10 浏览次数:104 分类:Java
-
本篇文章介绍了使用 Minecraft 时出现远程主机错误强制关闭现有连接的原因和解决方案。Minecraft 上 Java.IO.IOException: An Existing Connection Was Forcibly Closed by the Remote Host 原因
解决 Python中 ImportError: No Module Named mysql.connector 错误
发布时间:2023/05/30 浏览次数:199 分类:Python
-
本篇文章介绍如何修复 Python 中的 ImportError: No module named mysql.connector 错误。安装 MySQL Connector 修复 Python中 ImportError: No module named mysql.connector 错误
Python 中 ConnectionRefusedError: [Errno 111] Connection Refused 错误
发布时间:2023/05/17 浏览次数:186 分类:Python
-
不应该有任何路由器或防火墙可能会停止通信,因为根据您的网络地址,服务器和客户端都应该在同一个局域网上。为什么 ConnectionRefusedError: [Errno 111] Connection refused 在 Python 中发生
Python 中 ConnectionRefusedError: [Errno 61] Connection Refused 错误
发布时间:2023/05/16 浏览次数:230 分类:Python
-
有时在设计客户端-服务器程序时,您可能会遇到错误 ConnectionRefusedError。Python中 ConnectionRefusedError 错误是如何产生的 正如我们已经讨论过的,这个错误主要发生在客户端程序无法连接到服务器