经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » 编程经验 » 查看文章
6.4. HttpClient
来源:cnblogs  作者:博客0214  时间:2023/6/2 11:08:04  对本文有异议

1. 什么是HttpClient?

HttpClient是Java 11中引入的一个新特性,用于支持同步和异步发送HTTP请求以及处理HTTP响应。它提供了简单易用的API,使得发送HTTP请求变得非常简单。

2. HttpClient的主要组件

HttpClient由以下几个主要组件组成:

  • HttpClient:用于发送请求的主要类。
  • HttpRequest:表示一个HTTP请求。
  • HttpResponse:表示一个HTTP响应。

3. 发送GET请求

要使用HttpClient发送GET请求,可以创建一个HttpClient对象,然后创建一个HttpRequest对象并设置请求方法为GET。最后,使用HttpClient的send()方法发送请求并获取响应。以下是一个简单示例:

  1. import java.net.URI;
  2. import java.net.http.HttpClient;
  3. import java.net.http.HttpRequest;
  4. import java.net.http.HttpResponse;
  5. public class HttpClientGetExample {
  6. public static void main(String[] args) {
  7. try {
  8. HttpClient client = HttpClient.newHttpClient();
  9. HttpRequest request = HttpRequest.newBuilder()
  10. .uri(URI.create("https://www.example.com/"))
  11. .GET()
  12. .build();
  13. HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
  14. System.out.println(response.statusCode());
  15. System.out.println(response.body());
  16. } catch (Exception e) {
  17. e.printStackTrace();
  18. }
  19. }
  20. }

4. 发送POST请求

要使用HttpClient发送POST请求,可以创建一个HttpClient对象,然后创建一个HttpRequest对象并设置请求方法为POST。还需要设置请求体,例如表单数据或JSON数据。最后,使用HttpClient的send()方法发送请求并获取响应。以下是一个简单示例:

  1. import java.net.URI;
  2. import java.net.http.HttpClient;
  3. import java.net.http.HttpRequest;
  4. import java.net.http.HttpResponse;
  5. import java.nio.charset.StandardCharsets;
  6. public class HttpClientPostExample {
  7. public static void main(String[] args) {
  8. try {
  9. HttpClient client = HttpClient.newHttpClient();
  10. String postData = "username=user&password=pass";
  11. HttpRequest request = HttpRequest.newBuilder()
  12. .uri(URI.create("https://www.example.com/login"))
  13. .header("Content-Type", "application/x-www-form-urlencoded")
  14. .POST(HttpRequest.BodyPublishers.ofString(postData))
  15. .build();
  16. HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
  17. System.out.println(response.statusCode());
  18. System.out.println(response.body());
  19. } catch (Exception e) {
  20. e.printStackTrace();
  21. }
  22. }
  23. }

5. 异步请求

HttpClient还支持异步发送HTTP请求。要发送异步请求,可以使用HttpClient的sendAsync()方法。以下是一个简单示例:

  1. import java.net.URI;
  2. import java.net.http.HttpClient;
  3. import java.net.http.HttpRequest;
  4. import java.net.http.HttpResponse;
  5. public class HttpClientAsyncExample {
  6. public static void main(String[] args) {
  7. try {
  8. HttpClient client = HttpClient.newHttpClient();
  9. HttpRequest request = HttpRequest.newBuilder()
  10. .uri(URI.create("https://www.example.com/"))
  11. .GET()
  12. .build();
  13. client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
  14. .thenApply(HttpResponse::body)
  15. .thenAccept(System.out::println)
  16. .join();
  17. } catch (Exception e) {
  18. e.printStackTrace();
  19. }
  20. }
  21. }

6. 自定义HttpClient

可以通过HttpClient.Builder类自定义HttpClient,例如设置超时、代理、重定向策略等。以下是一个简单示例,演示如何设置超时和代理:

  1. import java.net.InetSocketAddress;
  2. import java.net.ProxySelector;
  3. import java.net.URI;
  4. import java.net.http.HttpClient;
  5. import java.net.http.HttpRequest;
  6. import java.net.http.HttpResponse;
  7. import java.time.Duration;
  8. public class CustomHttpClientExample {
  9. public static void main(String[] args) {
  10. try {
  11. HttpClient client = HttpClient.newBuilder()
  12. .connectTimeout(Duration.ofSeconds(5))
  13. .proxy(ProxySelector.of(new InetSocketAddress("myproxy.example.com", 8080)))
  14. .build();
  15. HttpRequest request = HttpRequest.newBuilder()
  16. .uri(URI.create("https://www.example.com/"))
  17. .GET()
  18. .build();
  19. HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
  20. System.out.println(response.statusCode());
  21. System.out.println(response.body());
  22. } catch (Exception e) {
  23. e.printStackTrace();
  24. }
  25. }
  26. }

现在,您已经了解了Java的HttpClient的基本概念和用法。实际上,还有许多其他功能和配置可以探索。在实际项目中,您可能需要根据具体需求调整HttpClient的配置。希望这些示例能帮助您更好地理解Java网络编程中的HttpClient组件。
推荐阅读:

https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA

https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g

file

原文链接:https://www.cnblogs.com/yaoqian/p/17451208.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号