当前位置: 首页 > news >正文

实用指南:12_OkHttp初体验

12_OkHttp初体验

在 Java 开发中,网络请求是非常常见的需求。除了 Spring 自带的 RestTemplateWebClient,一个非常轻量级、性能强劲的 HTTP 客户端库就是 OkHttp
今天就来记录一下我在 Spring Boot 项目中集成并使用 OkHttp 的初体验。


一、OkHttp 配置类

首先在 Spring Boot 中,我们通常会将 OkHttpClient 配置成一个 Bean,方便全局注入使用。

/**
* @Author: sqnugy
* @Date: 2025/7/29 20:13
* @Version: v1.0.0
* @Description: OkHttp 客户端配置类
**/
@Configuration
public class OkHttpConfig {
@Bean
public OkHttpClient okHttpClient(
@Value("${okhttp.connect-timeout}") int connectTimeout,
@Value("${okhttp.read-timeout}") int readTimeout,
@Value("${okhttp.write-timeout}") int writeTimeout,
@Value("${okhttp.max-idle-connections}") int maxIdleConnections,
@Value("${okhttp.keep-alive-duration}") int keepAliveDuration) {
return new OkHttpClient.Builder()
.connectTimeout(connectTimeout, TimeUnit.MILLISECONDS) // 建立连接超时
.readTimeout(readTimeout, TimeUnit.MILLISECONDS)       // 读取数据超时
.writeTimeout(writeTimeout, TimeUnit.MILLISECONDS)     // 写入数据超时
.connectionPool(new ConnectionPool(maxIdleConnections, keepAliveDuration, TimeUnit.MINUTES)) // 连接池配置
.build();
}
}

这样一来,OkHttpClient 就能作为 Spring Bean 被注入使用啦


⚙️ 二、配置文件

为了灵活性,我们把超时时间、连接池参数等写到 application.yml 中:

okhttp: # OkHttp 客户端配置
connect-timeout: 5000    # 建立连接的最大等待时间(毫秒)
read-timeout: 30000      # 读取数据的最大等待时间(毫秒)
write-timeout: 15000     # 写入数据的最大等待时间(毫秒)
max-idle-connections: 200 # 连接池中保持的最大空闲连接数
keep-alive-duration: 5   # 空闲连接在连接池中的存活时间(分钟)

这样后续如果需要调整参数,就不需要改代码了,非常方便。


三、OkHttp 使用示例

以一个 同步 GET 请求为例,我们来抓取指定 URL 的 HTML 内容。

/**
* 同步获取指定 URL 的 HTML 内容
* @param url 请求地址
* @return 页面 HTML 字符串
*/
private String syncFetchHtmlContent(String url) {
// 构建 HTTP GET 请求
Request request = new Request.Builder()
.url(url)
.header("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36") // 模拟浏览器 UA
.header("Accept", "text/html")  // 接受 HTML 格式
.build();
try (Response response = okHttpClient.newCall(request).execute()) {
// 判断响应是否成功
if (!response.isSuccessful() || response.body() == null) {
return "";
}
// 返回响应内容
return response.body().string();
} catch (IOException e) {
e.printStackTrace();
return "";
}
}

四、几点感受

  • 轻量级:相比 RestTemplate,OkHttp 使用起来更简洁,API 风格清晰。
  • 高性能:支持连接池,能复用 TCP 连接,减少资源消耗。
  • 灵活性高:可以方便地添加拦截器(例如日志、鉴权),在底层做更多定制化操作。
  • 同步 & 异步支持:既支持阻塞调用,也支持回调式异步请求。

总结

第一次上手 OkHttp 给我的感受是:简单、好用、性能强
如果你的项目里有需要进行大量 HTTP 调用的场景,完全可以考虑在 Spring Boot 里集成 OkHttp。后续我也会继续探索 拦截器异步请求上传下载文件等功能。

http://www.hskmm.com/?act=detail&tid=27485

相关文章:

  • (AE)Adobe After Effects 2025 视频后期制作软件!安装包永久免费免激H解锁版下载与图文详细安装教程!!
  • Postgresql主从配置
  • 乒乓球
  • 2025年工程管理软件系统推荐榜:交付管理/工程协同/工程管理/智慧工地管理系统
  • 《程序员修炼之道》 阅读笔记一
  • 大型行为模型LBM超越语言模型的技术解析
  • 2025工程管理软件系统推荐榜:技术赋能下的场景化解决方案全景
  • 【LVS入门宝典】LVS-TUN模式原理与配备:跨越网络界限的负载均衡解决方案
  • Java基础-Eclipse工具-面向对象(1)
  • Avalonia UI 投资 Wilderness Labs
  • BLE开发新体验:四种模式全解析,源码免费开放
  • JBoltAI V4 - 那年-冬季
  • 【EI检索】2025年智能决策与机器学习国际学术会议 (ICIDML 2025)
  • 10月9号
  • Qwen3技术报告
  • 赋能智慧监管:国标GB28181平台EasyGBS在明厨亮灶场景中的深度应用
  • CFD与FDM, FEM, FVM的关系?
  • 央国企高管团队为何频繁流失?揭示薪酬结构失衡的深层原因与优化策略
  • 在Ubuntu 22.04系统上安装libimobiledevice的步骤
  • Redis sentinal模式,master挂了的 选举过程
  • 软件技术基础第一次
  • 音频基础知识
  • 有限体积法和有限差分法、有限元法的区别。
  • 用户行为素材可视化
  • “十五五”战略下,央国企人事系统如何破局增效?T集团数字化转型案例分享
  • 关于审批流的记录
  • CF1726E Almost Perfect
  • 如何基于Elasticsearch实现问题联想?
  • 技术人的阅读提效神器:多语言智能中文摘要生成指令
  • 数据结构(树)