java 11新特性HttpClient主要组件及发送请求示例详解

 更新时间:2023年06月05日 14:52:32   作者:移动安全星球  
这篇文章主要为大家介绍了java 11新特性HttpClient主要组件及发送请求示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

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()方法发送请求并获取响应。以下是一个简单示例:

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class HttpClientGetExample {
    public static void main(String[] args) {
        try {
            HttpClient client = HttpClient.newHttpClient();
            HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create("https://www.example.com/"))
                    .GET()
                    .build();
            HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
            System.out.println(response.statusCode());
            System.out.println(response.body());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

4. 发送POST请求

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

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
public class HttpClientPostExample {
    public static void main(String[] args) {
        try {
            HttpClient client = HttpClient.newHttpClient();
            String postData = "username=user&amp;password=pass";
            HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create("https://www.example.com/login"))
                    .header("Content-Type", "application/x-www-form-urlencoded")
                    .POST(HttpRequest.BodyPublishers.ofString(postData))
                    .build();
            HttpResponse&lt;String&gt; response = client.send(request, HttpResponse.BodyHandlers.ofString());
            System.out.println(response.statusCode());
            System.out.println(response.body());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

5. 异步请求

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

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class HttpClientAsyncExample {
    public static void main(String[] args) {
        try {
            HttpClient client = HttpClient.newHttpClient();
            HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create("https://www.example.com/"))
                    .GET()
                    .build();
            client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
                    .thenApply(HttpResponse::body)
                    .thenAccept(System.out::println)
                    .join();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

6. 自定义HttpClient

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

import java.net.InetSocketAddress;
import java.net.ProxySelector;
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 CustomHttpClientExample {
    public static void main(String[] args) {
        try {
            HttpClient client = HttpClient.newBuilder()
                    .connectTimeout(Duration.ofSeconds(5))
                    .proxy(ProxySelector.of(new InetSocketAddress("myproxy.example.com", 8080)))
                    .build();
            HttpRequest request = HttpRequest.newBuilder()
                    .uri(URI.create("https://www.example.com/"))
                    .GET()
                    .build();
            HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
            System.out.println(response.statusCode());
            System.out.println(response.body());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

现在,您已经了解了Java的HttpClient的基本概念和用法。实际上,还有许多其他功能和配置可以探索。在实际项目中,您可能需要根据具体需求调整HttpClient的配置。希望这些示例能帮助您更好地理解Java网络编程中的HttpClient组件,更多关于java HttpClient的资料请关注脚本之家其它相关文章!

以上就是java 11新特性HttpClient主要组件及发送请求示例详解的详细内容,更多关于java HttpClient发送请求的资料请关注脚本之家其它相关文章!

相关文章

  • SpringBoot逻辑异常统一处理方法

    SpringBoot逻辑异常统一处理方法

    这篇文章主要介绍了SpringBoot逻辑异常统一处理方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • java 抛出异常处理的方法

    java 抛出异常处理的方法

    这篇文章主要介绍了java 抛出异常处理的方法的相关资料,throws关键字通常被应用在声明方法时,用来指定可能抛出的异常,这里就讲下如何使用,需要的朋友可以参考下
    2017-08-08
  • SpringBoot中@Autowired爆红原理分析及解决

    SpringBoot中@Autowired爆红原理分析及解决

    这篇文章主要介绍了SpringBoot中@Autowired爆红原理分析及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Java中volatile关键字实现原理

    Java中volatile关键字实现原理

    本文详细解读一下volatile关键字如何保证变量在多线程之间的可见性,对Java中volatile关键字实现原理感兴趣的朋友一起通过本文学习吧
    2017-06-06
  • 判断java文件类型TikaToolKit的实例

    判断java文件类型TikaToolKit的实例

    这篇文章主要介绍了判断java文件类型TikaToolKit的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • Java中的Object类用法总结

    Java中的Object类用法总结

    Java是一种面向对象的编程语言,它提供了一个非常强大的类库,其中一个基本类是Object类,下面这篇文章主要给大家介绍了Java中Object类用法的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-04-04
  • Java使用Redis实现微博热搜功能

    Java使用Redis实现微博热搜功能

    在社交平台上,热搜功能是一个非常重要的组成部分,它展示了当前最热门的话题,帮助用户迅速了解最受关注的事件,Redis 是一个高性能的键值存储系统,通常用于缓存和实时数据存储,本文将通过 Java 结合 Redis 实现一个简化版的微博热搜功能,需要的朋友可以参考下
    2024-12-12
  • 解决java.util.RandomAccessSubList cannot be cast to java.util.ArrayList错误的问题

    解决java.util.RandomAccessSubList cannot be cas

    当你尝试将RandomAccessSubList强制转换为ArrayList时,会抛出ClassCastException异常,解决这个问题,你可以使用List接口进行操作,或者使用ArrayList的构造函数创建新的ArrayList对象来处理子列表
    2025-11-11
  • 一文掌握JVM Safe Point

    一文掌握JVM Safe Point

    关于 Safe Point 是 JVM 中很关键的一个概念,但我估计有不少同学不是很懂,于是今天跟大家来深入聊聊 Safe Point,通过本文学习你会了解什么是 Safe Point?为啥需要 Safe Point?Safe Point 与 Stop the World 的关系?感兴趣的朋友一起看看吧
    2022-10-10
  • java实现图书馆管理系统

    java实现图书馆管理系统

    这篇文章主要为大家详细介绍了java实现图书馆管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10

最新评论