You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何切换访问不同URL?能否复用Reader对象?

不用反复创建对象!更优的HTTP请求方式

嘿,不用抱歉呀!每个Java开发者都是从基础问题摸爬滚打过来的,这太正常了😉

你提到的反复创建URL、连接对象的做法确实没必要,而且会带来额外的性能开销——每次新建连接都要重新建立TCP握手,次数多了会拖慢程序。下面给你两种更优的方案:

方案1:用Java 11+自带的HttpClient(推荐)

Java 11之后官方提供了更现代化的HTTP客户端,它是线程安全的,你只需要创建一次实例,然后用它发送所有请求就行。示例代码大概是这样:

// 只需要创建一次,全局复用
HttpClient httpClient = HttpClient.newBuilder()
        .connectTimeout(Duration.ofSeconds(10))
        .build();

// 第一个请求:获取数据
HttpRequest firstRequest = HttpRequest.newBuilder()
        .uri(URI.create("https://your-server.com/getData"))
        .GET()
        .build();
HttpResponse<String> firstResponse = httpClient.send(firstRequest, HttpResponse.BodyHandlers.ofString());
System.out.println("数据响应:" + firstResponse.body());

// 第二个请求:发送/getStatus命令
HttpRequest statusRequest = HttpRequest.newBuilder()
        .uri(URI.create("https://your-server.com/getStatus"))
        .GET()
        .build();
HttpResponse<String> statusResponse = httpClient.send(statusRequest, HttpResponse.BodyHandlers.ofString());
System.out.println("状态响应:" + statusResponse.body());

这个客户端还支持异步请求,要是你需要非阻塞操作也很方便。

方案2:使用Apache HttpClient(适合Java版本低于11的情况)

如果你的项目还在使用Java 8或更早版本,Apache的HttpClient库是个成熟的选择,同样可以复用客户端实例:

// 创建可复用的客户端实例(注意:CloseableHttpClient是线程安全的)
CloseableHttpClient httpClient = HttpClients.createDefault();

// 第一个请求
HttpGet firstGet = new HttpGet("https://your-server.com/getData");
CloseableHttpResponse firstResponse = httpClient.execute(firstGet);
try {
    System.out.println("数据响应:" + EntityUtils.toString(firstResponse.getEntity()));
} finally {
    firstResponse.close();
}

// 第二个请求
HttpGet statusGet = new HttpGet("https://your-server.com/getStatus");
CloseableHttpResponse statusResponse = httpClient.execute(statusGet);
try {
    System.out.println("状态响应:" + EntityUtils.toString(statusResponse.getEntity()));
} finally {
    statusResponse.close();
}

// 程序结束时再关闭客户端
httpClient.close();

关键注意点

  • 不管用哪种方案,客户端实例只创建一次,不要每次请求都new一个,这样才能复用连接池,提升性能。
  • 如果你的请求量很大,可以配置连接池参数(比如最大连接数、空闲连接超时等),进一步优化。

内容的提问来源于stack exchange,提问作者ralfiii

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:39:57