答案是使用java.net.http.HttpClient发送网络请求。它通过链式调用构建请求,支持同步异步操作,内置超时、HTTP/2和连接池管理,相比老旧的HttpURLConnection更简洁高效,推荐用于现代Java项目中的HTTP通信。

Java中发送网络请求,现代且推荐的方式是使用内置的
java.net.http.HttpClient
要用Java的
HttpClient
HttpClient
HttpRequest
HttpResponse
一个最简单的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 SimpleGetRequest {
public static void main(String[] args) {
HttpClient client = HttpClient.newBuilder()
.version(HttpClient.Version.HTTP_2) // 推荐使用HTTP/2
.connectTimeout(Duration.ofSeconds(10)) // 设置连接超时
.build();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://jsonplaceholder.typicode.com/posts/1")) // 目标URI
.GET() // GET请求
.header("Accept", "application/json") // 设置请求头
.build();
try {
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); // 同步发送请求,并处理响应体为字符串
System.out.println("Status Code: " + response.statusCode());
System.out.println("Response Body: " + response.body());
} catch (Exception e) {
System.err.println("请求失败了,真是出乎意料啊: " + e.getMessage());
e.printStackTrace();
}
}
}如果你需要发送POST请求,比如带上JSON数据,那也只是在构建
HttpRequest
立即学习“Java免费学习笔记(深入)”;
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 SimplePostRequest {
public static void main(String[] args) {
HttpClient client = HttpClient.newBuilder()
.version(HttpClient.Version.HTTP_2)
.connectTimeout(Duration.ofSeconds(10))
.build();
String jsonBody = "{\"title\": \"foo\", \"body\": \"bar\", \"userId\": 1}"; // 要发送的JSON数据
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://jsonplaceholder.typicode.com/posts"))
.header("Content-Type", "application/json") // 告诉服务器我发的是JSON
.POST(HttpRequest.BodyPublishers.ofString(jsonBody)) // POST请求,带上JSON体
.build();
try {
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println("Status Code: " + response.statusCode());
System.out.println("Response Body: " + response.body());
} catch (Exception e) {
System.err.println("POST请求也失败了,看看是哪儿出了问题: " + e.getMessage());
e.printStackTrace();
}
}
}记住,
HttpClient
说实话,刚接触Java网络编程的时候,
HttpURLConnection
相比之下,
HttpClient
HttpClient
CompletableFuture
HttpClient
HttpClient
在实际开发中,网络请求失败几乎是家常便饭。超时、网络中断、服务器无响应,这些都是我们必须面对的挑战。我刚开始写网络请求的时候,最头疼的就是异常处理。超时啊,连接断了啊,这些都是家常便饭。所以,一套好的异常处理机制,真的能让你少掉很多头发。
HttpClient
IOException
InterruptedException
Thread.interrupt()
HttpTimeoutException
处理这些异常,最基本的就是使用
try-catch
配置超时是预防长时间阻塞的关键。
HttpClient.Builder
connectTimeout()
requestTimeout()
connectTimeout()
HttpTimeoutException
requestTimeout()
示例代码中已经包含了
connectTimeout
HttpRequest
import java.time.Duration;
// ... 其他导入
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://some-slow-api以上就是java怎样使用HttpClient发送网络请求 java网络编程的入门技巧指南的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号