当前位置:首页 > Java > 正文

Java语言HTTP客户端入门指南(手把手教你用Java发送HTTP请求)

在现代软件开发中,Java HTTP客户端 是一个非常重要的工具。无论是调用第三方API、获取网页内容,还是与微服务通信,都需要使用HTTP客户端来发送请求并接收响应。本教程将从零开始,帮助你掌握如何在Java中使用内置的HTTP客户端发送GET、POST等常见请求。

为什么需要Java HTTP客户端?

在Java 11之前,开发者通常依赖第三方库(如Apache HttpClient或OkHttp)来处理HTTP请求。但从Java 11开始,Java标准库内置了全新的 java.net.http.HttpClient 类,功能强大且无需额外依赖,非常适合进行 Java网络编程

Java语言HTTP客户端入门指南(手把手教你用Java发送HTTP请求) Java HTTP客户端  Java网络编程 HttpClient教程 Java发送HTTP请求 第1张

准备工作

要使用Java内置的HTTP客户端,请确保你的JDK版本为 11或更高。你可以通过以下命令检查版本:

java -version

发送一个简单的GET请求

下面是一个使用Java内置HttpClient发送GET请求的完整示例:

import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;import java.time.Duration;public class SimpleHttpGet {    public static void main(String[] args) throws Exception {        // 创建HttpClient实例        HttpClient client = HttpClient.newBuilder()                .connectTimeout(Duration.ofSeconds(10))                .build();        // 构建HttpRequest        HttpRequest request = HttpRequest.newBuilder()                .uri(URI.create("https://jsonplaceholder.typicode.com/posts/1"))                .timeout(Duration.ofSeconds(30))                .header("Accept", "application/json")                .GET() // 默认就是GET,可省略                .build();        // 发送请求并获取响应        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());        // 打印状态码和响应体        System.out.println("状态码: " + response.statusCode());        System.out.println("响应内容:\n" + response.body());    }}

这段代码展示了如何使用 HttpClient教程 中最基础的GET请求操作。我们设置了连接超时、请求头,并指定了返回体为字符串类型。

发送POST请求(带JSON数据)

很多时候我们需要向服务器提交数据,比如用户注册、订单创建等。这时就需要使用POST请求。以下是如何发送带JSON体的POST请求:

import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;import java.time.Duration;public class SimpleHttpPost {    public static void main(String[] args) throws Exception {        String jsonBody = "{\"title\": \"Hello\", \"body\": \"This is a test post\", \"userId\": 1}";        HttpClient client = HttpClient.newBuilder()                .connectTimeout(Duration.ofSeconds(10))                .build();        HttpRequest request = HttpRequest.newBuilder()                .uri(URI.create("https://jsonplaceholder.typicode.com/posts"))                .header("Content-Type", "application/json")                .header("Accept", "application/json")                .timeout(Duration.ofSeconds(30))                .POST(HttpRequest.BodyPublishers.ofString(jsonBody))                .build();        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());        System.out.println("状态码: " + response.statusCode());        System.out.println("响应内容:\n" + response.body());    }}

异步请求(非阻塞)

除了同步方式(send),HttpClient还支持异步请求(sendAsync),适用于高并发场景:

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

总结

通过本篇 Java发送HTTP请求 教程,你应该已经掌握了如何使用Java 11+内置的HttpClient进行基本的网络通信。它简洁、高效,且无需引入外部依赖,是现代Java开发中处理HTTP请求的首选方案。

记住,无论你是构建Web爬虫、调用RESTful API,还是开发微服务客户端,掌握 Java HTTP客户端 都是必不可少的技能。快去动手试试吧!

提示:所有示例均可在本地IDE(如IntelliJ IDEA或Eclipse)中直接运行,前提是JDK版本 ≥ 11。