迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 编程语言 > Java >

Java 错误 Java.Net.ConnectException: Connection Timed Out

作者:迹忆客 最近更新:2023/07/16 浏览次数:

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 无法在浏览器上打开。

它们可能是由于:

  1. URL 的 IP/域不正确。
  2. 该IP/域名对应的服务器宕机了。
  3. 防火墙可能阻止了请求,或者互联网位于代理后面。
  4. 服务器可能已将该 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 中的连接超时错误。

  1. 通过 setFixedLengthStreamingMode() 设置内容长度。
  2. 如果 URL 连接在第一次尝试失败,则重试连接。
  3. 通过 setConnectTimeout 函数将连接限制增加到更高的数量。

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

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.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 连

Python 中 ConnectionRefusedError: [Errno 61] Connection Refused 错误

发布时间:2023/05/16 浏览次数:230 分类:Python

有时在设计客户端-服务器程序时,您可能会遇到错误 ConnectionRefusedError。Python中 ConnectionRefusedError 错误是如何产生的 正如我们已经讨论过的,这个错误主要发生在客户端程序无法连接到服务器

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便