温馨提示×

温馨提示×

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

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

怎样用java处理HTTP响应

发布时间:2026-09-10 21:25:52 来源:亿速云 阅读:89 作者:小樊 栏目:编程语言

在 Java 中处理 HTTP 响应,通常取决于你使用的HTTP 客户端方式。下面按常见场景给你一个清晰、实用的说明。


一、使用 HttpURLConnection(JDK 原生,最基础)

1. 发送请求并获取响应

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

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

        conn.setRequestMethod("GET");
        conn.setConnectTimeout(5000);
        conn.setReadTimeout(5000);

        int status = conn.getResponseCode();
        System.out.println("HTTP Status: " + status);

        InputStream inputStream = status >= 400
                ? conn.getErrorStream()
                : conn.getInputStream();

        BufferedReader reader = new BufferedReader(
                new InputStreamReader(inputStream, "UTF-8"));

        String line;
        StringBuilder response = new StringBuilder();
        while ((line = reader.readLine()) != null) {
            response.append(line);
        }
        reader.close();

        System.out.println("Response: " + response);
    }
}

2. 常见处理点

  • getResponseCode():状态码(200 / 404 / 500)
  • getHeaderField("Content-Type")
  • getInputStream():正常响应
  • getErrorStream():错误响应

二、使用 HttpClient(Java 11+,推荐 ✅)

1. 发送 GET 请求并处理响应

import java.net.URI;
import java.net.http.*;
import java.net.http.HttpResponse.BodyHandlers;

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

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

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

        System.out.println("Status: " + response.statusCode());
        System.out.println("Headers: " + response.headers());
        System.out.println("Body: " + response.body());
    }
}

2. 异步处理(非阻塞)

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

三、处理 JSON 响应(最常见)

1. 使用 Jackson

import com.fasterxml.jackson.databind.ObjectMapper;

MyData data = new ObjectMapper()
        .readValue(response.body(), MyData.class);

2. 使用 Gson

MyData data = new Gson().fromJson(response.body(), MyData.class);

四、处理不同响应类型

响应类型 处理方式
文本 / JSON BodyHandlers.ofString()
字节流 BodyHandlers.ofByteArray()
文件下载 BodyHandlers.ofFile(Path)
流式 BodyHandlers.ofInputStream()

五、错误处理最佳实践

if (response.statusCode() >= 400) {
    throw new RuntimeException("HTTP Error: " + response.statusCode());
}

六、常见库对比

方式 特点
HttpURLConnection 原生、旧、代码繁琐
Java 11 HttpClient ✅ 官方推荐
Apache HttpClient 功能强大、老项目常用
OkHttp Android / 高性能常用

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

  • Java 版本(8 / 11 / 17)
  • 是否处理 JSON / 文件 / 表单
  • 同步还是异步

我可以给你更贴合的示例代码。

向AI问一下细节

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

AI
助
手