在 Java 中支持 / 使用 HTTP 协议,常见方式有以下几种,按“从原生到现代”给你梳理:
适合简单请求,不依赖第三方库。
URL url = new URL("https://example.com");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setConnectTimeout(5000);
int code = conn.getResponseCode();
BufferedReader br = new BufferedReader(
new InputStreamReader(conn.getInputStream()));
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
conn.disconnect();
✅ 优点:零依赖
❌ 缺点:API 老旧、功能弱
真正现代 HTTP 支持(HTTP/1.1、HTTP/2)
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://example.com"))
.build();
HttpResponse<String> response =
client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.statusCode());
System.out.println(response.body());
✅ 支持:
老牌、稳定、功能强
CloseableHttpClient client = HttpClients.createDefault();
HttpGet get = new HttpGet("https://example.com");
CloseableHttpResponse response = client.execute(get);
✅ 适合复杂企业项目
❌ 依赖较重
简洁、性能好
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://example.com")
.build();
Response response = client.newCall(request).execute();
RestTemplate rest = new RestTemplate();
String result = rest.getForObject(url, String.class);
WebClient.create()
.get()
.uri("https://example.com")
.retrieve()
.bodyToMono(String.class)
.block();
HttpServer server = HttpServer.create(new InetSocketAddress(8080), 0);
server.createContext("/hello", exchange -> {
exchange.sendResponseHeaders(200, 0);
});
server.start();
| 场景 | 推荐方案 |
|---|---|
| Java 11+ 简单调用 | HttpClient |
| 老项目 | HttpURLConnection |
| 企业复杂 | Apache HttpClient |
| Android | OkHttp |
| Spring 项目 | WebClient / RestTemplate |
| 提供 HTTP 服务 | Spring Boot |
如果你说的是:
可以告诉我,我可以直接给你完整示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。