在 Java 中处理 HTTP 响应,通常取决于你使用的HTTP 客户端方式。下面按常见场景给你一个清晰、实用的说明。
HttpURLConnection(JDK 原生,最基础)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);
}
}
getResponseCode():状态码(200 / 404 / 500)getHeaderField("Content-Type")getInputStream():正常响应getErrorStream():错误响应HttpClient(Java 11+,推荐 ✅)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());
}
}
client.sendAsync(request, BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(System.out::println)
.join();
import com.fasterxml.jackson.databind.ObjectMapper;
MyData data = new ObjectMapper()
.readValue(response.body(), MyData.class);
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 / 高性能常用 |
如果你愿意,可以告诉我:
我可以给你更贴合的示例代码。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。