📅  最后修改于: 2023-12-03 15:01:35.324000             🧑  作者: Mango
Java.net.http 包是 Java 11 中引入的一个新的标准库,用于处理 HTTP 请求和响应。它提供了一个简单而强大的 API,可以轻松地发送 HTTP 请求并处理响应。
首先,我们需要安装 Java 11,如果还没有安装的话。你可以前往 Oracle 官方网站 下载适合你操作系统的 JDK。
首先,我们先创建一个简单的 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 请求后,我们可能需要根据响应的结果采取不同的操作。下面是一些处理响应的常见示例:
int statusCode = response.statusCode();
String contentType = response.headers().firstValue("Content-Type").orElse("");
String responseBody = response.body();
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 包。