温馨提示×

温馨提示×

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

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

java HTTP客户端怎么写

发布时间:2026-09-10 22:43:54 来源:亿速云 阅读:90 作者:小樊 栏目:编程语言

在 Java 里写 HTTP 客户端有多种方式,下面按常见程度和现代程度给你几个最实用的写法示例。


一、Java 11+ 原生 java.net.http.HttpClient(推荐 ✅)

不需要额外依赖,官方标准

1️⃣ GET 请求

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

public class HttpDemo {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newHttpClient();

        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create("https://example.com"))
                .GET()
                .build();

        HttpResponse<String> response =
                client.send(request, HttpResponse.BodyHandlers.ofString());

        System.out.println(response.statusCode());
        System.out.println(response.body());
    }
}

2️⃣ POST 请求(JSON)

HttpRequest request = HttpRequest.newBuilder()
        .uri(URI.create("https://example.com/api"))
        .header("Content-Type", "application/json")
        .POST(HttpRequest.BodyPublishers.ofString(
                "{\"name\":\"tom\"}"
        ))
        .build();

HttpResponse<String> response =
        client.send(request, HttpResponse.BodyHandlers.ofString());

3️⃣ 异步请求(非阻塞)

client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
        .thenApply(HttpResponse::body)
        .thenAccept(System.out::println);

二、Apache HttpClient(老牌、功能强)

Maven 依赖

<dependency>
    <groupId>org.apache.httpcomponents.client5</groupId>
    <artifactId>httpclient5</artifactId>
    <version>5.3</version>
</dependency>

GET 示例

CloseableHttpClient client = HttpClients.createDefault();
HttpGet get = new HttpGet("https://example.com");

try (CloseableHttpResponse response = client.execute(get)) {
    String result = EntityUtils.toString(response.getEntity());
    System.out.println(result);
}

✅ 适合:复杂配置、连接池、重试、代理


三、Spring RestTemplate(Spring 项目常用)

RestTemplate restTemplate = new RestTemplate();
String result = restTemplate.getForObject(
        "https://example.com", String.class);

⚠️ Spring 官方更推荐 WebClient


四、Spring WebClient(响应式 ✅ 推荐新项目)

WebClient client = WebClient.create();

client.get()
      .uri("https://example.com")
      .retrieve()
      .bodyToMono(String.class)
      .subscribe(System.out::println);

五、怎么选?

场景 推荐
Java 11+ 普通项目 HttpClient
老项目 / 复杂 HTTP Apache HttpClient
Spring Boot WebClient
快速调用 RestTemplate(不推荐新写)

如果你告诉我:

  • Java 版本
  • 是否 Spring
  • 同步还是异步
  • 是否要连接池 / 超时 / 代理

我可以直接给你可复制的完整代码。

向AI问一下细节

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

AI
助
手