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发送请求的资料请关注脚本之家其它相关文章!

相关文章

  • Java中的动态代理原理及实现

    Java中的动态代理原理及实现

    这篇文章主要介绍了Java中的动态代理原理及实现,动态是相对于静态而言,何为静态,即编码时手动编写代理类、委托类,而动态呢,是不编写具体实现类,等到使用时,动态创建一个来实现代理的目的,需要的朋友可以参考下
    2023-12-12
  • DoytoQuery 聚合查询方案示例详解

    DoytoQuery 聚合查询方案示例详解

    这篇文章主要为大家介绍了DoytoQuery 聚合查询方案示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • 解决 IDEA Maven 项目中"Could not find artifact" 问题的常见情况和解决方案

    解决 IDEA Maven 项目中"Could not find artifact" 

    这篇文章主要介绍了解决IDEA Maven项目中Could not find artifact问题的常见情况和解决方案,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-07-07
  • java数据结构实现机器人行走

    java数据结构实现机器人行走

    这篇文章主要为大家详细介绍了java数据结构实现机器人行走,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01
  • Java的Hibernate框架中的基本映射用法讲解

    Java的Hibernate框架中的基本映射用法讲解

    映射是Hibernate框架操作数据库数据的重要特性之一,这里我们来看一下Java的Hibernate框架中的基本映射用法讲解,包括最基本的单向一对一与多对一映射关系等:
    2016-07-07
  • Java之SpringBoot-Thymeleaf详情

    Java之SpringBoot-Thymeleaf详情

    聊Thymeleaf,需要知道为什么到了SpringBoot中就不用JSP了?这跟SpringBoot打包方式有点关系,SpringBoot项目打包是jar包,下面文章小编就对此做一个详细介绍,需要的朋友可以参考一下
    2021-09-09
  • Kotlin基础教程之函数定义与变量声明

    Kotlin基础教程之函数定义与变量声明

    这篇文章主要介绍了Kotlin基础教程之函数定义与变量声明的相关资料,需要的朋友可以参考下
    2017-05-05
  • macOS中搭建Java8开发环境(基于Intel x86 64-bit)

    macOS中搭建Java8开发环境(基于Intel x86 64-bit)

    这篇文章主要介绍了macOS中搭建Java8开发环境(基于Intel x86 64-bit) 的相关资料,需要的朋友可以参考下
    2022-12-12
  • SpringBoot整合七牛云上传图片的示例代码

    SpringBoot整合七牛云上传图片的示例代码

    本文就来介绍了SpringBoot整合七牛云上传图片的示例代码,用户在前端上传图片后,交由后端处理,上传至七牛云,感兴趣的可以了解一下
    2023-10-10
  • Java中如何获取mysql连接的3种方法总结

    Java中如何获取mysql连接的3种方法总结

    最近工作中需要用到mysql连接,发现实现的方法不止一个,所以就来总结下,下面这篇文章主要给大家介绍了关于Java中如何获取mysql连接的3种方法,需要的朋友可以参考借鉴,感兴趣的朋友们下面随着小编来一起学习学习吧。
    2017-08-08

最新评论