Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Dec 24, 2025

升级到 Apache HttpClient 5.x 作为默认 HTTP 客户端

Apache HttpClient 4.x 已进入维护模式。项目已有完整的 HttpClient 5.x 实现(hc/ 目录),但配置为 provided scope。本 PR 将 HttpClient 5.x 设为默认,同时保持 4.x 兼容。

依赖变更

  • 添加 httpclient5.version=5.5 属性
  • httpclient5provided 改为默认依赖
  • 保留 httpclient 4.5.13 作为默认依赖(向后兼容)
  • 两个版本共存,通过配置选择

默认配置

对已有 *HttpComponentsImpl 实现的模块,将默认 HTTP 客户端改为 HttpComponents (5.x):

  • ✅ weixin-java-mp, channel, qidian, pay, open → 默认 HttpComponents
  • ⚠️ weixin-java-miniapp → 保持 HttpClient (4.x),暂无 5.x 实现
  • ℹ️ weixin-java-cp → 支持情况取决于具体使用的 Starter 版本

更新所有 HttpClientType 枚举添加 HttpComponents 选项。

配置示例

# Spring Boot 单体 Starter 配置
wx.mp.config-storage.http-client-type=HttpComponents  # 5.x (新默认)
wx.mp.config-storage.http-client-type=HttpClient      # 4.x (兼容)

# Spring Boot Multi-Starter 配置(注意使用大写下划线格式)
wx.mp.config-storage.http-client-type=HTTP_COMPONENTS  # 5.x
wx.mp.config-storage.http-client-type=HTTP_CLIENT      # 4.x
// 纯 Java 配置
WxMpService service = new WxMpServiceHttpComponentsImpl();  // 5.x
WxMpService service = new WxMpServiceHttpClientImpl();      // 4.x

文档

  • README.md: HTTP 客户端支持说明和配置表格,包含 Multi-Starter 配置注意事项
  • docs/HTTPCLIENT_UPGRADE_GUIDE.md: 详细迁移指南,使用通用版本号描述
  • Spring Boot Starter README: 更新配置示例

兼容性

  • 现有项目无需修改代码
  • HttpClient 4.x 代码和依赖保持不变
  • 用户可通过配置自由切换客户端类型

代码审查反馈已处理

  • ✅ 修复文档中的版本号引用问题,使用通用版本描述
  • ✅ 更正 CP 模块支持说明,明确其支持情况取决于具体 Starter 版本
  • ✅ 添加 Multi-Starter 枚举命名格式说明(HTTP_COMPONENTS vs HttpComponents)
  • ✅ 统一所有枚举类型的注释风格,使用简洁格式
Original prompt

This section details on the original issue you should resolve

<issue_title>请问什么时候升级Httpclient,或者换成其他库,现在Httpclient4.x已经改成Httpclient5.x了</issue_title>
<issue_description>请问什么时候升级Httpclient,或者换成其他库,现在Httpclient4.x已经改成Httpclient5.x了
</issue_description>

Comments on the Issue (you are @copilot in this section)

@binarywang 这可能是个大工程,欢迎提供PR代码来实现

Custom agent used: 全部用中文
需要用中文,包括PR标题和分析总结过程


💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

Copilot AI and others added 2 commits December 24, 2025 08:31
Co-authored-by: binarywang <1343140+binarywang@users.noreply.github.com>
Co-authored-by: binarywang <1343140+binarywang@users.noreply.github.com>
Copilot AI changed the title [WIP] Upgrade HttpClient from version 4.x to 5.x 升级到 Apache HttpClient 5.x 作为默认 HTTP 客户端 Dec 24, 2025
Copilot AI requested a review from binarywang December 24, 2025 08:39
@binarywang binarywang marked this pull request as ready for review December 26, 2025 06:33
Copilot AI review requested due to automatic review settings December 26, 2025 06:33
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

本 PR 旨在将 WxJava 项目的默认 HTTP 客户端从 Apache HttpClient 4.x 升级到 5.x,同时保持向后兼容性。这是为了应对 HttpClient 4.x 进入维护模式的情况,并为用户提供更现代、性能更好的 HTTP 客户端选项。

主要变更

  • 依赖升级:将 httpclient5provided scope 改为默认依赖,添加 httpclient5.version=5.5 属性,同时保留 HttpClient 4.x 依赖以确保向后兼容
  • 默认配置更新:在 MP、CP、Channel、QiDian 等模块的 Spring Boot 和 Solon 配置中,将默认 HTTP 客户端从 HttpClient(4.x)改为 HttpComponents(5.x)
  • API 扩展:在所有支持的模块中为 HttpClientType 枚举添加 HttpComponents 选项,支持用户通过配置切换 HTTP 客户端类型

Reviewed changes

Copilot reviewed 19 out of 19 changed files in this pull request and generated 16 comments.

Show a summary per file
File Description
pom.xml 添加 httpclient5.version 属性,将 httpclient5 从 provided 改为默认依赖,保留 httpclient 4.x 依赖
weixin-java-common/pom.xml 移除 httpclient5 的 provided scope,调整依赖声明顺序
spring-boot-starters/wx-java-mp-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/mp/properties/WxMpProperties.java 将 MP 模块默认 HTTP 客户端改为 HttpComponents
spring-boot-starters/wx-java-mp-spring-boot-starter/README.md 更新配置示例,说明 HttpComponents 为推荐选项
spring-boot-starters/wx-java-qidian-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/qidian/properties/WxQidianProperties.java 将 QiDian 模块默认 HTTP 客户端改为 HttpComponents
spring-boot-starters/wx-java-qidian-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/qidian/enums/HttpClientType.java 为 QiDian 模块添加 HttpComponents 枚举值
spring-boot-starters/wx-java-channel-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/channel/properties/WxChannelProperties.java 将 Channel 模块默认 HTTP 客户端改为 HttpComponents
spring-boot-starters/wx-java-channel-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/channel/enums/HttpClientType.java 为 Channel 模块添加 HttpComponents 枚举值,更新注释
spring-boot-starters/wx-java-channel-multi-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/channel/enums/HttpClientType.java 为 Channel Multi 模块添加 HttpComponents 枚举值
spring-boot-starters/wx-java-miniapp-spring-boot-starter/src/main/java/com/binarywang/spring/starter/wxjava/miniapp/enums/HttpClientType.java 为 MiniApp 模块添加 HttpComponents 枚举值(但未改变默认配置)
solon-plugins/wx-java-mp-solon-plugin/src/main/java/com/binarywang/solon/wxjava/mp/properties/WxMpProperties.java 将 Solon MP 插件默认 HTTP 客户端改为 HttpComponents
solon-plugins/wx-java-mp-solon-plugin/src/main/java/com/binarywang/solon/wxjava/mp/enums/HttpClientType.java 为 Solon MP 插件添加 HttpComponents 枚举值
solon-plugins/wx-java-qidian-solon-plugin/src/main/java/com/binarywang/solon/wxjava/qidian/properties/WxQidianProperties.java 将 Solon QiDian 插件默认 HTTP 客户端改为 HttpComponents
solon-plugins/wx-java-qidian-solon-plugin/src/main/java/com/binarywang/solon/wxjava/qidian/enums/HttpClientType.java 为 Solon QiDian 插件添加 HttpComponents 枚举值
solon-plugins/wx-java-channel-solon-plugin/src/main/java/com/binarywang/solon/wxjava/channel/properties/WxChannelProperties.java 将 Solon Channel 插件默认 HTTP 客户端改为 HttpComponents
solon-plugins/wx-java-channel-solon-plugin/src/main/java/com/binarywang/solon/wxjava/channel/enums/HttpClientType.java 为 Solon Channel 插件添加 HttpComponents 枚举值
solon-plugins/wx-java-miniapp-solon-plugin/src/main/java/com/binarywang/solon/wxjava/miniapp/enums/HttpClientType.java 为 Solon MiniApp 插件添加 HttpComponents 枚举值
README.md 添加 HTTP 客户端支持说明章节,包括支持的客户端类型、配置方式和注意事项
docs/HTTPCLIENT_UPGRADE_GUIDE.md 新增详细的 HttpClient 升级迁移指南,包括升级原因、影响、迁移步骤和常见问题

binarywang and others added 4 commits December 27, 2025 16:40
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…in/java/com/binarywang/spring/starter/wxjava/qidian/enums/HttpClientType.java

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@binarywang
Copy link
Owner

@copilot apply changes based on the comments in this thread

- 修复文档中的版本号引用,使用通用版本描述
- 更正 CP 模块支持说明,明确其支持情况取决于具体 Starter 版本
- 添加 Multi-Starter 枚举命名格式说明
- 统一所有枚举类型的注释风格,使用简洁格式

Co-authored-by: binarywang <1343140+binarywang@users.noreply.github.com>
@binarywang binarywang added this to the 4.8.1 milestone Jan 3, 2026
@binarywang
Copy link
Owner

auggie review

@augmentcode
Copy link

augmentcode bot commented Jan 6, 2026

🤖 Augment PR Summary

概述:本 PR 将 Apache HttpClient 5.x(HttpComponents Client 5)升级为项目默认 HTTP 客户端,同时保留 4.x 以确保向后兼容。

主要变更:

  • 在父 pom.xml 中新增 httpclient5.version=5.5,并将 httpclient5provided 调整为默认依赖(推荐)。
  • 继续保留 httpclient 4.5.13(含 httpmime)作为兼容依赖,允许 4.x/5.x 共存并通过配置选择。
  • 新增/更新多个 Starter 与 Solon 插件的 HttpClientType 枚举,加入 HttpComponents 选项,并在部分模块中将默认值切换到 5.x。
  • 更新 README.md 增加“HTTP 客户端支持”章节,补充单体 Starter 与 Multi-Starter 的配置示例与注意事项。
  • 新增 docs/HTTPCLIENT_UPGRADE_GUIDE.md 迁移指南,说明升级原因、模块支持情况与排除依赖方式。

技术注意:此次变更主要集中在依赖与默认实现切换,核心接口保持不变;使用方可通过配置显式选择 HttpClient 4.x 或 5.x。

🤖 Was this summary useful? React with 👍 or 👎

Copy link

@augmentcode augmentcode bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review completed. 2 suggestions posted.

Fix All in Augment

Comment augment review to trigger a new review at any time.

1. 修正 MiniApp 模块 HttpClient 5.x 支持说明
   - 更新模块支持表格,明确 MiniApp 已支持 HttpClient 5.x
   - 完善说明文字,解释默认使用 4.x 的原因
   - 修正 FAQ 中的相关问题描述

2. 统一 Channel Multi-Starter 的 HttpClientType 枚举命名
   - 将 HttpComponents 改为 HTTP_COMPONENTS
   - 与其他 multi-starter 保持命名一致性
   - 添加对应的服务实例化逻辑

Closes #3824
@binarywang binarywang merged commit e46da01 into develop Jan 6, 2026
1 check passed
@binarywang binarywang deleted the copilot/upgrade-httpclient-to-5-x branch January 6, 2026 03:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

请问什么时候升级Httpclient,或者换成其他库,现在Httpclient4.x已经改成Httpclient5.x了

2 participants