📜  Java.net.http 包的 HTTP API 示例(1)

📅  最后修改于: 2023-12-03 15:01:35.324000             🧑  作者: Mango

Java.net.http 包的 HTTP API 示例

Java.net.http 包是 Java 11 中引入的一个新的标准库,用于处理 HTTP 请求和响应。它提供了一个简单而强大的 API,可以轻松地发送 HTTP 请求并处理响应。

安装 Java 11

首先,我们需要安装 Java 11,如果还没有安装的话。你可以前往 Oracle 官方网站 下载适合你操作系统的 JDK。

创建 HTTP 请求

首先,我们先创建一个简单的 HTTP GET 请求示例。下面的代码片段演示了如何使用 Java.net.http 包发送一个基本的 GET 请求:

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

public class HttpClientExample {

    public static void main(String[] args) {
        HttpClient httpClient = HttpClient.newHttpClient();
        HttpRequest httpRequest = HttpRequest.newBuilder()
                .uri(URI.create("https://api.example.com/data"))
                .build();

        try {
            HttpResponse<String> response = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
            int statusCode = response.statusCode();
            String responseBody = response.body();

            System.out.println("Status Code: " + statusCode);
            System.out.println("Response Body: " + responseBody);
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

在这个示例中,我们首先创建了一个 HttpClient 对象。然后,我们构建了一个 HttpRequest 对象并设置了请求的 URI。最后,我们使用 HttpClient 的 send 方法发送了这个请求,并使用 HttpResponse 对象获取响应结果。

处理响应

当我们发送 HTTP 请求后,我们可能需要根据响应的结果采取不同的操作。下面是一些处理响应的常见示例:

  1. 获取响应状态码:
int statusCode = response.statusCode();
  1. 获取响应头:
String contentType = response.headers().firstValue("Content-Type").orElse("");
  1. 获取响应体:
String responseBody = response.body();
发送 POST 请求

Java.net.http 还提供了发送 POST 请求的简单方法。下面的代码片段演示了如何发送一个基本的 POST 请求:

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.http.HttpHeaders;
import java.net.http.HttpRequest.BodyPublishers;
import java.util.HashMap;
import java.util.Map;
import java.io.IOException;

public class HttpClientExample {

    public static void main(String[] args) {
        HttpClient httpClient = HttpClient.newHttpClient();
        Map<String, String> data = new HashMap<>();
        data.put("name", "John Doe");
        data.put("age", "30");

        String requestBody = data.entrySet().stream()
                .map(entry -> entry.getKey() + "=" + entry.getValue())
                .reduce((s1, s2) -> s1 + "&" + s2)
                .orElse("");

        HttpRequest httpRequest = HttpRequest.newBuilder()
                .uri(URI.create("https://api.example.com/submit"))
                .header("Content-Type", "application/x-www-form-urlencoded")
                .POST(BodyPublishers.ofString(requestBody))
                .build();

        try {
            HttpResponse<String> response = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
            int statusCode = response.statusCode();
            String responseBody = response.body();

            System.out.println("Status Code: " + statusCode);
            System.out.println("Response Body: " + responseBody);
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

在这个示例中,我们首先创建了一个包含发送数据的 Map 对象。然后,我们将数据转换为 URL 编码的字符串。接下来,我们构建了一个 POST 请求,并将编码后的数据设置为请求的 body。最后,我们使用 HttpClient 发送了这个请求,并使用 HttpResponse 对象获取响应结果。

总结

Java.net.http 包提供了一个简单而强大的 API,用于处理 HTTP 请求和响应。通过使用这个包,我们可以轻松地发送和处理 HTTP 请求。希望以上示例可以帮助你更好地理解和应用 Java.net.http 包。