Java进阶篇--HttpClient工具类

这篇具有很好参考价值的文章主要介绍了Java进阶篇--HttpClient工具类。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

什么是HttpClient

HttpClient的注意事项

HttpClient的使用流程

HttpClient常用方法

HttpClient工具类

添加依赖


什么是HttpClient

HttpClient 是 Apache HttpComponents 的一个子项目,旨在提供高效的、最新的、功能丰富的 HTTP 协议客户端编程工具包。它是一个 Java 库,可用于在 Java 应用程序中发送 HTTP 请求并处理 HTTP 响应。

HttpClient 提供了一组 API,使开发人员能够轻松地构建和管理 HTTP 请求,同时它还提供了各种功能,例如连接管理、重定向处理、代理服务器支持、请求/响应拦截器等。

HttpClient 支持 HTTP/1.1 和 HTTP/2 协议,实现了所有 HTTP 的方法(GET,POST,PUT,DELETE 等),支持自动转向,支持代理服务器,支持 HTTPS 协议进行安全传输。

它具有以下主要特点:

  1. 高效的连接管理:HttpClient 支持连接池、连接重用、连接保持等功能,可以有效地减少网络连接的开销。
  2. 灵活的请求和响应处理:开发人员可以轻松地构建 HTTP 请求,并且可以方便地对响应进行处理。
  3. 对 WebSocket 的支持:HttpClient 支持 WebSocket 协议,可以方便地进行 WebSocket 通信。
  4. 灵活的拦截器:开发人员可以方便地通过拦截器对请求和响应进行预处理和后处理。
  5. 支持 HTTPS 协议:HttpClient 支持 HTTPS 协议,可以保证数据的安全传输。

总之,HttpClient 是一个功能强大、易于使用、灵活的 HTTP 客户端编程工具包,适用于各种 Java 应用程序。

注意

HttpClient 3.x 版本与 HttpClient 4.x 版本之间确实存在较大的变化。在 HttpClient 4.x 版本中,API 被设计为更加模块化和扩展性,以便支持更多的 HTTP 方法和协议。此外,HttpClient 4.x 版本还提供了更强大的连接管理、重定向处理、代理服务器支持、请求/响应拦截器等功能。

如果从 HttpClient 3.x 版本升级到 HttpClient 4.x 版本,需要重新编写部分代码,并适应新的 API。建议参考 HttpClient 的官方文档或相关的迁移指南,以了解如何在 HttpClient 4.x 版本中实现相同的功能。

HttpClient的注意事项

HttpClient 是一个 HTTP 客户端库,主要用于发送和接收 HTTP 消息,但它并不具备以下一些特定的功能:

  1. 处理 HTTP 消息的内容:HttpClient 仅负责传输 HTTP 消息,但不会对消息的内容进行任何处理或解析。它不会执行像 JavaScript 这样的动态代码,也不会关注消息内容的类型或格式。
  2. 解析 HTML 或其他标记语言:HttpClient 并不具备解析 HTML 或其他标记语言的能力。它只关注 HTTP 消息的传输和基本处理,而不涉及对这些标记语言的解析和操作。
  3. 处理 content type:HttpClient 本身并不处理或解析 HTTP 消息的内容类型(content type)。它只是将接收到的 HTTP 消息原样传递给调用者,而不关心消息的具体内容类型或格式。
  4. 执行重定向:默认情况下,HttpClient 不会自动执行 HTTP 重定向。它只会发送原始的 HTTP 请求,并等待服务器返回响应。如果服务器返回了重定向响应,HttpClient 需要由开发人员手动处理重定向。
  5. 处理其他与 HTTP 消息传输相关的功能:HttpClient 主要关注的是发送和接收 HTTP 消息,对于一些与 HTTP 消息传输相关的功能,如身份验证、缓存、代理等,HttpClient 可能需要配合其他库或配置来实现。

总之,HttpClient 是一个强大的 HTTP 客户端库,主要用于发送和接收 HTTP 消息。然而,它并不具备处理 HTTP 消息内容、解析标记语言、自动执行重定向或其他一些与 HTTP 消息传输相关的特定功能。

HttpClient的使用流程

使用 HttpClient 工具类发送 HTTP 请求的流程通常如下:

  1. 创建 HttpClient 对象。
  2. 创建请求方法的实例,并指定请求 URL。如果需要发送 GET 请求,创建 HttpGet 对象;如果需要发送 POST 请求,创建 HttpPost 对象。
  3. 如果需要发送请求参数,可调用 HttpGet、HttpPost 共同的 setParams(HttpParams params) 方法来添加请求参数;对于 HttpPost 对象而言,也可调用 setEntity(HttpEntity entity) 方法来设置请求参数。
  4. 调用 HttpClient 对象的 execute(HttpUriRequest request) 发送请求,该方法返回一个 HttpResponse。
  5. 调用 HttpResponse 的 getAllHeaders()、getHeaders(String name)等方法可获取服务器的响应头;调用 HttpResponse 的 getEntity() 方法可获取 HttpEntity 对象,该对象包装了服务器的响应内容。程序可通过该对象获取服务器的响应内容。
  6. 释放连接。注意:无论执行方法是否成功,都必须释放连接。

HttpClient常用方法

HttpClient 4.x 是一个用于发送 HTTP 请求的 Java 库,它提供了一组方法来执行各种 HTTP 操作。以下是一些 HttpClient 4.x 的常用方法:

  1. execute(HttpUriRequest request): 发送请求并返回一个 HttpResponse 对象。
  2. execute(HttpUriRequest request, HttpContext context): 与上一个方法类似,但增加了额外的上下文信息。
  3. execute(HttpHost target, HttpRequest request): 在给定的目标主机上发送请求并返回 HttpResponse。
  4. execute(HttpHost target, HttpRequest request, HttpContext context): 与上一个方法类似,但增加了额外的上下文信息。
  5. send(HttpEntityEnclosingRequest request, HttpResponse responseHandler): 发送请求并使用指定的响应处理器处理响应。
  6. send(HttpEntityEnclosingRequest request, Class responseType): 发送请求并返回指定类型的响应对象。
  7. send(HttpEntityEnclosingRequest request, Type responseType): 与上一个方法类似,但指定了响应类型。
  8. getParams(): 获取 HttpClient 的参数。
  9. setParams(HttpParams params): 设置 HttpClient 的参数。
  10. getRequest(): 获取 HttpClient 的请求方法实例。
  11. setRequest(HttpRequest request): 设置 HttpClient 的请求方法实例。
  12. addHeader(String name, String value): 向请求头添加一个字段。
  13. removeHeader(String name): 从请求头中删除指定的字段。
  14. getParams(): 获取 HttpClient 的参数。
  15. setParams(HttpParams params): 设置 HttpClient 的参数。
  16. getRequest(): 获取 HttpClient 的请求方法实例。
  17. setRequest(HttpRequest request): 设置 HttpClient 的请求方法实例。
  18. addHeader(String name, String value): 向请求头添加一个字段。
  19. removeHeader(String name): 从请求头中删除指定的字段。
  20. getAllHeaders(): 获取所有请求头的字段。
  21. getHeaders(String name): 获取指定名称的请求头的字段。
  22. setEntity(HttpEntity entity): 设置请求参数实体。
  23. getEntity(): 获取响应内容的 HttpEntity 对象。
  24. releaseConnection(): 释放连接资源。

HttpClient工具类

添加依赖

<properties>
        <httpclient.version>4.5.5</httpclient.version>

        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    </properties>

    <dependencies>
        <!-- springboot的web和test启动库 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>

        <!-- apache httpclient组件 -->
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
        </dependency>

    </dependencies>

    <build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!-- 跳过单元测试 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>
        </plugins>
    </build>

下面是一个使用 HttpClient 发送 GET 请求的示例代码: 

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class HttpClientExample {
    public static void main(String[] args) throws Exception {
        // 创建 HttpClient 对象
        CloseableHttpClient httpClient = HttpClients.createDefault();

        // 创建 HttpGet 对象,并指定请求 URL
        HttpGet httpGet = new HttpGet("http://www.example.com");

        // 发送 GET 请求,并获取 HttpResponse
        HttpResponse httpResponse = httpClient.execute(httpGet);

        // 获取响应状态码和响应实体
        int statusCode = httpResponse.getStatusLine().getStatusCode();
        HttpEntity httpEntity = httpResponse.getEntity();

        // 处理响应内容
        if (httpEntity != null) {
            String responseString = EntityUtils.toString(httpEntity);
            System.out.println("Response Code: " + statusCode);
            System.out.println("Response Content: " + responseString);
        }

        // 释放连接资源
        httpClient.close();
    }
}

注意

httpClient.close() 是用于关闭 HttpClient 连接的函数。HttpClient 是用于发送 HTTP 请求的 Java 库,当不再需要使用 HttpClient 时,应该调用 close() 函数来释放资源,以避免资源泄漏。

具体来说,httpClient.close() 函数会关闭与服务器之间的连接,并释放相关的资源,如网络连接、线程池等。这有助于提高应用程序的性能和资源利用率,同时避免不必要的资源占用。

在使用 HttpClient 发送完 HTTP 请求后,建议及时调用 close() 函数关闭连接,以保持良好的应用程序性能和资源管理。文章来源地址https://www.toymoban.com/news/detail-687933.html

到了这里,关于Java进阶篇--HttpClient工具类的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Java 进阶篇】Java Web开发:实现验证码功能

    在Web应用程序中,验证码(CAPTCHA)是一种常见的安全工具,用于验证用户是否为人类而不是机器。验证码通常以图像形式呈现,要求用户在登录或注册时输入正确的字符。在这篇文章中,我们将详细介绍如何在Java Web应用程序中实现验证码功能。 验证码是“全自动区分计算机

    2024年02月03日
    浏览(39)
  • 进阶JAVA篇- Collcetions 工具类与集合的并发修改异常问题

    目录         1.0 集合的并发修改问题                 1.1 如何解决集合的并发修改问题         2.0 Collcetions 工具类的说明         我们可以简单的认为,就是使用迭代器遍历集合时,又同时在删除集合中的数据,程序就会出现并发修改异常的错误。 代码如下: 运行

    2024年02月07日
    浏览(41)
  • java后端对接外部系统(HttpClient HttpPost)

    最近遇到一个需求对接外部系统,我们自己的系统发送请求,根据请求内容的不同调用不同的外部系统。举例:我们是做互联网医院的,根据医生开处方选择药店的不同,调用各药店自己的系统,返回结果 可以学到对接外部系统的一些设计 构造需要的json java项目中HTTPPost请求

    2024年02月15日
    浏览(50)
  • Java中常见的几种HttpClient调用方式

    一、HttpURLConnection调用 方式一: 方式二: 缺点:不能直接使用池化技术,需要自行处理输入输出流 二、apache common封装HttpClient 引入依赖 实现 三、CloseableHttpClient 可以使用连接池保持连接,并且过期自动释放。引入jar包 引入依赖 实现 非连接池连接: 四、OkHttp3 引入依赖 实

    2024年02月04日
    浏览(55)
  • 【Java-Crawler】HttpClient+Jsoup实现简单爬虫

    网络爬虫(WEB crawler),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。 导入依赖(下面列的程序用的是这个依赖,是版本5,我是从Maven中直接copy最新版的,没想那么多,但4点多的用的人多点,而且网上资料也多点,所以还是推荐大家用4点多的吧,但是下

    2024年02月05日
    浏览(40)
  • 🔥🔥Java开发者的Python快速进修指南:函数进阶

    在上一篇文章中,我们讲解了函数最基础常见的用法,今天我想在这里简单地谈一下函数的其他用法。尽管这些用法可能不是非常常见,但我认为它们仍然值得介绍。因此,我将单独为它们开设一个章节,并探讨匿名函数和装饰器函数这两种特殊的用法。 在Python中,匿名函数

    2024年02月05日
    浏览(55)
  • java 远程调用 httpclient 调用https接口 忽略SSL认证

    httpclient 调用https接口,为了避免需要证书,所以用一个类继承DefaultHttpClient类,忽略校验过程。下面是忽略校验过程的代码类:SSLClient  然后再调用的远程get、post请求中使用SSLClient 创建Httpclient ,代码如下:

    2024年02月11日
    浏览(41)
  • WebClient, HttpClient, OkHttp: 三个Java HTTP客户端的比较

    在Java世界中,有许多用于发送HTTP请求的库。在本文中,我们将重点介绍并比较三种流行的HTTP客户端:WebClient,HttpClient和OkHttp。我们将通过讲解它们的基本概念,使用方法和示例,以及它们的优缺点,帮助你选择最适合你的HTTP客户端。 WebClient是Spring 5中引入的非阻塞,反应

    2024年02月08日
    浏览(40)
  • 🔥🔥Java开发者的Python快速进修指南:面向对象进阶

    在上一期中,我们对Python中的对象声明进行了初步介绍。这一期,我们将深入探讨对象继承、组合以及多态这三个核心概念。不过,这里不打算赘述太多理论,因为我们都知道,Python与Java在这些方面的主要区别主要体现在语法上。例如,Python支持多重继承,这意味着一个类可

    2024年02月05日
    浏览(59)
  • Java HttpClient 实战 GET 与 POST 请求一网打尽

    在Java中, HttpClient 是进行HTTP通信的一个强大工具。它提供了简单而灵活的API,可以轻松地发送HTTP请求并处理响应。在本篇博文中,我们将深入探讨如何使用 HttpClient 执行GET、POST等不同类型的HTTP请求。 首先,确保在项目的 pom.xml 文件中引入 HttpClient 的依赖: 让我们从一个简

    2024年01月17日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包