温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java HTTP请求超时如何设置

发布时间:2025-12-30 21:55:14 来源:亿速云 阅读:121 作者:小樊 栏目:编程语言

在Java中,当你使用HTTP客户端(如HttpClient)发起请求时,可以设置连接超时和读取超时。以下是使用Java 11中的HttpClient设置超时的示例:

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.time.Duration;

public class Main {
    public static void main(String[] args) {
        HttpClient httpClient = HttpClient.newBuilder()
                .connectTimeout(Duration.ofSeconds(10)) // 设置连接超时
                .build();

        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create("https://example.com"))
                .timeout(Duration.ofSeconds(5)) // 设置读取超时
                .GET()
                .build();

        try {
            HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
            System.out.println("Status code: " + response.statusCode());
            System.out.println("Response body: " + response.body());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在这个示例中,我们设置了连接超时为10秒,读取超时为5秒。如果在这段时间内无法建立连接或读取响应,将会抛出异常。

如果你使用的是其他HTTP客户端库(如Apache HttpClient),设置超时的方法可能会有所不同。以下是使用Apache HttpClient设置超时的示例:

import org.apache.http.client.config.RequestConfig;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;

public class Main {
    public static void main(String[] args) {
        RequestConfig requestConfig = RequestConfig.custom()
                .setConnectTimeout(10000) // 设置连接超时(毫秒)
                .setSocketTimeout(5000) // 设置读取超时(毫秒)
                .build();

        CloseableHttpClient httpClient = HttpClients.custom()
                .setDefaultRequestConfig(requestConfig)
                .build();

        HttpGet request = new HttpGet("https://example.com");

        try (CloseableHttpResponse response = httpClient.execute(request)) {
            System.out.println("Status code: " + response.getStatusLine().getStatusCode());
            System.out.println("Response body: " + EntityUtils.toString(response.getEntity()));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

在这个示例中,我们同样设置了连接超时为10秒,读取超时为5秒。如果在这段时间内无法建立连接或读取响应,将会抛出异常。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI