温馨提示×

温馨提示×

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

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

java怎么处理HTTP

发布时间:2026-07-15 21:16:27 来源:亿速云 阅读:92 作者:小樊 栏目:编程语言

在 Java 中处理 HTTP 一般有 几种常见方式,从早期到现代、从简单到功能强大,下面按使用频率和实际场景给你一个清晰总结。


一、原生方式(JDK 自带)

1️⃣ HttpURLConnection(老牌、简单、不推荐新项目)

JDK 自带,无需第三方依赖,但 API 比较原始、代码繁琐

示例:发送 GET 请求

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class HttpExample {
    public static void main(String[] args) throws Exception {
        URL url = new URL("https://api.example.com/data");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("GET");

        BufferedReader reader = new BufferedReader(
                new InputStreamReader(conn.getInputStream())
        );

        String line;
        while ((line = reader.readLine()) != null) {
            System.out.println(line);
        }
        reader.close();
    }
}

✅ 优点:无依赖
❌ 缺点:代码啰嗦、不支持 HTTP/2、难用


二、现代标准方式(✅ 推荐)

2️⃣ java.net.http.HttpClient(Java 11+)

官方推荐、支持 HTTP/2、异步、链式 API

GET 请求

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

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

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

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

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

POST(JSON)

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

✅ 优点:

  • 官方标准
  • 支持 HTTP/2
  • 同步 / 异步都支持
    Java 11+ 项目首选

三、第三方库(企业项目常用)

3️⃣ Apache HttpClient(功能最全)

适合复杂 HTTP 场景(代理、重试、连接池)

Maven 依赖

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

示例

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

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

✅ 优点:功能强大
❌ 缺点:依赖较重


4️⃣ OkHttp(Android / 后端都用)

轻量、高性能、支持 HTTP/2

OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
        .url("https://api.example.com/data")
        .build();

client.newCall(request).enqueue(new Callback() {
    public void onFailure(Call call, IOException e) {}
    public void onResponse(Call call, Response response) throws IOException {
        System.out.println(response.body().string());
    }
});

✅ 优点:简单、性能好
✅ Android 首选


四、Spring 项目(最常见)

5️⃣ RestTemplate(Spring 4–5,逐步淘汰)

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

6️⃣ WebClient(✅ Spring WebFlux 推荐)

非阻塞、响应式

WebClient client = WebClient.create();

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

✅ 微服务 / 高并发推荐


五、怎么选?

场景 推荐
Java 11+ 普通项目 HttpClient
Spring Boot WebClient
Android OkHttp
老项目 HttpURLConnection
复杂 HTTP 控制 Apache HttpClient

六、常见注意点

  • 超时设置(防止线程阻塞)
  • 编码问题(UTF-8)
  • HTTPS 证书
  • 连接池(高并发)
  • JSON 处理(Jackson / Gson)

如果你愿意,可以告诉我:

  • ✅ Java 版本
  • ✅ 是否 Spring / Android
  • ✅ 同步还是异步
  • ✅ 请求类型(GET / POST / 文件上传)

我可以直接给你最合适的示例代码

向AI问一下细节

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

AI