SpringBoot集成HttpClient

HttpClient常用操作及封装工具类 HttpClient 是一个用于发送 HTTP 请求和接收 HTTP 响应的类库/模块,可以用于编写客户端应用程序,通过 HTTP 与服务器进行通信。 HttpClient 提供了一组方法和类,使得发送 HTTP 请求变得简单和方便。它支持各种 HTTP 方法,例如 GET、POST、PUT、DELETE 等,并可以设置请求的头部信息、请求参数、请求体等。 阅读详情

##HttpClient几个主要概念

  1. CloseableHttpClient
    用于发送请求,因为是线程安全的,所以只需要在程序中创建一个单例。
  2. RequestConfig
    用于配置每个请求的各项timeout等等
  3. PoolingHttpClientConnectionManager
    用于配置连接池
  4. ConnetionKeepAliveStrategy
    用于创建KeepAlive策略。
  5. HTTP 1.1长连接
    HTTP 1.1默认支持长连接,在header中会带有keep-alive。
    使用HttpClient的线程池,可以利用开启的长连接来减少创建连接的开销。

在整个集成HttpClient的过程中,主要顺序是:
配置KeepAlive策略 -> 配置连接池 -> 配置RequestConfig -> 配置HttpClient

另外也可以通HttpClient来配置自己的RestTemplate

##HttpClient集成
依赖:org.apache.httpcomponents:httpclient:4.5.7

集成配置(Kotlin)

@Configuration
class HttpConfig {

    @Primary
    @Bean
    fun httpClient(requestConfig: RequestConfig, httpClientConnectionManager: HttpClientConnectionManager): CloseableHttpClient {
        return HttpClientBuilder
                .create()
                //.addInterceptorFirst(LogbookHttpRequestInterceptor(OutgoingLogbook.logbook()))
                //.addInterceptorFirst(LogbookHttpResponseInterceptor())
                .setConnectionManager(httpClientConnectionManager)
                .setDefaultRequestConfig(requestConfig)
                .setKeepAliveStrategy(KeepAliveStrategy())
                .build()
    }

    @Primary
    @Bean
    fun sslRestTemplate(httpClient: CloseableHttpClient, objectMapper: ObjectMapper): RestTemplate {
        return restTemplateFor(httpClient, objectMapper)
    }

    private fun restTemplateFor(httpClient: CloseableHttpClient,
                                objectMapper: ObjectMapper): RestTemplate {
        return RestTemplateBuilder()
                .requestFactory { BufferingClientHttpRequestFactory(HttpComponentsClientHttpRequestFactory(httpClient)) }
                .messageConverters(
                        MappingJackson2HttpMessageConverter(objectMapper),
                        ByteArrayHttpMessageConverter(),
                        StringHttpMessageConverter(),
                        ResourceHttpMessageConverter()
                )
                .build()
    }

    @Bean
    fun httpClientConnectionManager(sslContext: SSLContext): HttpClientConnectionManager {
        // 此处是关于SSL的配置,如果需要请求https且需要用连接池,需要将该factory配置于此处
        val sslConnectionSocketFactory = SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE)
        val socketFactoryRegistry = RegistryBuilder.create<ConnectionSocketFactory>()
                .register("http", PlainConnectionSocketFactory.INSTANCE)
                .register("https", sslConnectionSocketFactory)
                .build()

        val connectionManager = PoolingHttpClientConnectionManager(socketFactoryRegistry)
        connectionManager.maxTotal = 100
        connectionManager.defaultMaxPerRoute = 2
        return connectionManager
    }

    @Bean
    fun requestConfig(): RequestConfig {
        return RequestConfig.custom().setConnectTimeout(3000).setSocketTimeout(1000).setConnectionRequestTimeout(500).build()
    }

    private class KeepAliveStrategy : ConnectionKeepAliveStrategy {
        override fun getKeepAliveDuration(response: HttpResponse, context: HttpContext): Long {

            val it = BasicHeaderElementIterator(response.headerIterator(HTTP.CONN_KEEP_ALIVE))
            while (it.hasNext()) {
                val headerElement = it.nextElement()
                val param = headerElement.name
                val value = headerElement.value
                if (value != null && "timeout".equals(param, ignoreCase = true)) {
                    return value.toLong()
                }
            }

            return 60 * 1000
        }
    }
}

##HttpClient使用

别再手动拼接URL了!用HttpClient搞定微信登录,5分钟集成到你的SpringBoot外卖项目 本文介绍了如何使用Apache HttpClient快速集成微信登录功能到SpringBoot外卖项目中,替代传统手动拼接URL的方式。通过详细的代码示例和配置建议,帮助开发者提升接口性能和代码健壮性,特别适合类似'苍穹外卖'这样的电商项目。 阅读详情

相关推荐

Spring Boot进阶(72):【教程】用Spring Boot和HttpClient实现高效的HTTP请求

本文主要包括以下内容: 使用Spring Boot和HttpClient实现基础的HTTP请求 实现带有请求头和请求体的HTTP请求 实现HTTPS请求 借助于Apache HttpClient的高级特性,如连接池、请求重试、请求超时等 通过单元测试验证HTTP请求的正确性和可靠性

**My Coding Family** 5914

SpringBoot使用HttpClient

一、HttpClient 两个系统间如何互相访问?两个tomcat上的项目如何互相访问 采用HttpClient实现跨系统的接口调用。 1 1.2、 什么是HttpClient 官网:http://hc.apache.org/index.html 特点: HttpClient别名:HttpComponents HttpClient可以发送get、post、put、delete、…等请求 1.3、 HttpClient入门案例 <dependency> <groupId&..

weixin_57763462的博客 8046

Spring Boot入门教程(五十): httpclient

引入依赖 &amp;amp;lt;dependency&amp;amp;gt; &amp;amp;lt;groupId&amp;amp;gt;org.apache.httpcomponents&amp;amp;lt;/groupId&amp;amp;gt; &amp;amp;lt;artifactId&amp;amp;gt;httpclient&amp;amp;lt;/artifactId&amp;amp;g

人不风流枉少年 4492

【HttpClient】在 SpringBoot 中使用 HttpClient 实现 HTTP 请求

越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。 HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。 ...

sco5282的博客 1万+

(project generation have a problem)STM32CubeMX生成工程一直报错项目生成有问题[玄学三步解]

解决办法 第一步,检查自己是不是真的配置的不对,JAVA安装没,pack路径设置的对不对,这里有一位前辈的博文写的非常好,附加链接https://blog.youkuaiyun.com/ybhuangfugui/article/details/52225736#commentBox 第二步,如果按照前辈的博文设置的都一模一样,还是不对,想我下图这样。 那你来对地方了 方法很简单,你把你生成工程文件的路径彻底的...

展桑博客-BenjieBlog 2922

基于FreeSwitch与SIP UA的蓝牙电话坐席系统实战部署

本文详细介绍了如何基于FreeSwitch开源软交换平台,结合SIP UA软电话与蓝牙电话App,在局域网内搭建一套低成本、自主可控的电话坐席系统。文章提供了从环境准备、FreeSwitch安装配置、用户与拨号计划创建,到SIP软电话测试和蓝牙设备接入的完整实战部署流程,并给出了关键优化与排坑指南,适合小微团队或个人开发者构建内部通讯工具。

zeta9的博客 544

springboot :集成httpclient连接池技术

package com.xf.station.config; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; impor...

qq_25933249的博客 2377

电池建模 004- Battery (Table-Based)表格化电池模型入门学习

对于 Battery (Table-Based) 模块,提供了多种内置参数。该预参数化数据允许您将模块设置为代表特定供应商的组件。这些电池的参数化可以与制造数据表中的放电曲线相匹配。要加载预定义的参数化,双击 Battery (Table-Based) 模块,点击 Selected part 参数中的 超链接,然后在块参数化管理器窗口中,从可用组件列表中选择所需部件。 (默认)选项用于参数化模块,以代表特定供应商的组件。

qq_63860930的博客 2734

springboot 集成httpclient

源码地址:https://github.com/li5454yong/springboot-httpclient.git 使用Spring集成httpclient时,需要复杂的配置文件spring管理httpclient。而使用SpringBoot来集成httpclient,我们只需要几个注解,一个java文件就能搞定。 pom文件 XHTML

knight_watch的博客 3098

EB TRESOS 29.0.0安装教程用于MCAL配置开发

本文介绍的搭建基于NXP官网提供EB软件,进行基于标准AUTOSAR软件底层驱动配置的开发

qq_53260940的博客 1877

告别迷茫!手把手教你用Altova XMLSpy编写EtherCAT从站ESI文件(附避坑指南)

本文详细介绍了如何使用Altova XMLSpy高效编写EtherCAT从站ESI文件,涵盖核心架构、通信通道配置、过程数据映射等关键步骤,并提供了常见问题排查与性能优化建议。通过实战案例和避坑指南,帮助工程师快速掌握EtherCAT从站开发技巧,提升工作效率。

weixin_42570484的博客 395

springboot 如何集成httpClient

使用Spring集成httpclient时,需要复杂的配置文件spring管理httpclient。而使用SpringBoot来集成httpclient,我们只需要几个注解,一个java文件就能搞定。 pox.xml文件: dependency> groupId>org.springframework.bootgroupId> artifa

u010088415的博客 1万+

老款 NUC 复活计划:装 Ubuntu 部署 OpenClaw 本地 AI

老款 NUC 变身本地 AI 服务器指南 本文详细介绍了如何将老旧华硕 NUC 设备改造为本地 AI 服务器。主要内容包括: 硬件评估:列出老款 NUC 的最低配置要求(i3 6代/8GB内存/256GB SSD),并提供兼容性检查命令和性能预期表 系统准备:指导备份数据、下载 Ubuntu 22.04 LTS 和制作启动盘的方法(Windows/Linux双平台) 安装流程:从 BIOS 设置到 Ubuntu 安装的完整步骤,包括推荐的分区方案 系统优化:禁用不必要的服务、内核参数调优、Swap 配置和

博客 7608

springboot集成HttpClient

springboot集成HttpClient一:添加maven依赖:&lt;!-- 集成HttpClient--&gt;&lt;dependency&gt; &lt;groupId&gt;org.apache.httpcomponents&lt;/groupId&gt; &lt;artifactId&gt;httpclient&lt;/artifactId&gt;&lt;/dependen...

双鱼座的蔚的博客 5925

YOLOv8改进 | 主干网络 | 增加网络结构增强小目标检测能力【独家创新——附结构图】

YOLOv8改进,小目标检测,yolov8

kay_545 6020

C#实现自己的远程桌面控制工具

1. 创建一个winform工程并添加RDP客户端COM组件。右击工具箱,然后点击选择项,选中下图所示组件并点击确定。为窗口加载时添加自动连接远程桌面代码。3.调试运行程序,验证远程桌面控制。拖放RDP控件到窗口中。2.编写远程桌面连接代码。

6089

spring boot集成HttpClient连接池

1、在pom.xml中添加httpclient的依赖 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.8</version> </de...

jiaxuebingzhaojin的博客 6799

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Spring boot集成httpclient

一、有关http协议 http协议是无状态的协议,即每一次请求都是互相独立的。因此它的最初实现是,每一个http请求都会打开一个tcp socket连接,当交互完毕后会关闭这个连接。 http协议使用的全双工的协议(串行连接): 建立连接与断开连接需要经过三次握手和四次挥手。在这种设计中,每次交互都会消耗额外资源:连接的建立和销毁。 发展为持续连接: 第一次交互会打开连接...

MaggieZhang的博客 1323

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

SpringBoot框架搭建系列(七):集成HttpClient

本次我们集成HttpClient. 1、引入依赖 &lt;dependency&gt; &lt;groupId&gt;org.apache.httpcomponents&lt;/groupId&gt; &lt;artifactId&gt;httpclient&lt;/artifactId&gt; &lt;version&...

beck2017的博客 804

SpringBoot之集成HttpClient

SpringBoot集成HttpClient的细节

绣花针 2828

springboot集成httpclient

第一步:添加依赖 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.3</version> </dependency> 第二步:配置RestConfiguration @Configuration public class R

qq_41642640的博客 629

SpringBoot :SpringBoot 2.x 集成HttpClient

目录 连接池的设置。 获取连接超时时间、建立连接超时时间、保持连接超时时间的设置。 长连接策略的设置。 连接逐出策略的设置。 重试机制的设置。 个性化请求参数的设置。 附录。 序 HttpClient可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。 使用HttpClient发送请求和接收响应的步骤: 创建CloseableHttpClient对象; 创建请求方法实例,并指定请求URL。例:如果要发送Get请求,创

qq_31432773的博客 4242

基于SpringBoot的httpclient实现(高级版)

SpringBoot的HttpClient高级封装

dashalen的博客 1272

基于SpringBoot的httpclient实现(基础版)

基于springboot的httpclient实现(RestTemplate)

dashalen的博客 2019

SpringBoot 集成retrofit httpclient

这个比官网更适合于springboot,零配置。

frt的博客 291
上一篇: Centos 7_MySQL主主复制_Haproxy实现负载均衡
下一篇: Gradle笔记
AlainGogogo
博客等级 码龄18年 5粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值