# HFBaseHTTPRequestManager
**Repository Path**: hfqf1234/hfbase-httprequest-manager
## Basic Information
- **Project Name**: HFBaseHTTPRequestManager
- **Description**: 一个功能强大的iOS网络请求管理模块,采用工厂模式和单例模式设计,支持多种业务场景的网络请求处理。该模块提供了完整的网络请求解决方案,包括请求管理、安全加密、错误处理等功能。
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 0
- **Created**: 2025-07-29
- **Last Updated**: 2025-08-01
## Categories & Tags
**Categories**: Uncategorized
**Tags**: IOS, 网络组件, 抽象工厂
## README
# HFBaseHTTPRequestManagerModule
[](https://travis-ci.org/baiye/HFBaseHTTPRequestManagerModule)
[](https://cocoapods.org/pods/HFBaseHTTPRequestManagerModule)
[](https://cocoapods.org/pods/HFBaseHTTPRequestManagerModule)
[](https://cocoapods.org/pods/HFBaseHTTPRequestManagerModule)
## 📖 项目概述
HFBaseHTTPRequestManagerModule 是一个功能强大的iOS网络请求管理模块,采用工厂模式和单例模式设计,支持多种业务场景的网络请求处理。该模块提供了完整的网络请求解决方案,包括请求管理、安全加密、错误处理等功能。
## ✨ 主要特性
- 🔧 **多业务支持**:支持HT、LJC等多种业务场景
- 🔐 **安全加密**:集成RSA、AES、MD5等多种加密算法
- 🏭 **工厂模式**:采用抽象工厂模式,易于扩展和维护
- 📱 **环境配置**:支持生产、测试、开发等多种环境
- 🔄 **异步处理**:支持coobjc异步处理
- 📤 **文件上传**:支持单文件和多文件上传
- 🛡️ **错误处理**:完善的错误处理和重试机制
- 🎯 **链式调用**:提供流畅的链式API调用
## 🏗️ 架构设计
### 整体架构图
```mermaid
graph TB
A[客户端调用] --> B[HFHttpAbstractFactory]
B --> C[HFHttpFactory]
C --> D[HFBaseHTTPRequestManager]
D --> E[AFNetworking]
E --> F[网络请求]
G[HFSecurity] --> H[RSA加密]
G --> I[AES加密]
G --> J[MD5哈希]
K[HFURLSetting] --> L[环境配置]
K --> M[域名管理]
N[HFHttpResonseModule] --> O[响应处理]
P[HFHttpError] --> Q[错误处理]
C --> G
D --> K
D --> N
D --> P
```
### 核心组件架构
```mermaid
graph LR
A[HFBaseHTTPRequestManager
核心管理器] --> B[HFHttpAbstractFactory
抽象工厂]
B --> C[HFHttpFactory
基础工厂]
C --> D[HFHttpHtFactory
HT工厂]
C --> E[HFHttpLJCFactory
LJC工厂]
C --> F[HFHttpLJCSignFactory
签名工厂]
C --> G[HFHttpJustGetFactory
GET工厂]
C --> H[HFHttpPushExtensionFactory
推送工厂]
I[HFSecurity
安全模块] --> J[RSA加密]
I --> K[AES加密]
I --> L[MD5哈希]
I --> M[Base64编码]
N[HFURLSetting
配置模块] --> O[环境配置]
N --> P[域名管理]
N --> Q[路径配置]
A --> I
A --> N
```
## 📁 项目结构
```
HFBaseHTTPRequestManagerModule/
├── HFBaseHTTPRequestManager.h/m # 核心请求管理器
├── HFHttpAbstractFactory.h # 抽象工厂接口
├── HFHttpFactory.h/m # 基础工厂实现
├── HFHttpHtFactory.h/m # HT业务工厂
├── HFHttpLJCFactory.h/m # LJC业务工厂
├── HFHttpLJCSignFactory.h/m # 带签名工厂
├── HFHttpJustGetFactory.h/m # GET请求工厂
├── HFHttpPushExtensionFactory.h/m # 推送扩展工厂
├── HFURLSetting.h/m # URL配置管理
├── HFHttpResonseModule.h/m # 响应处理模块
├── HFHttpError.h/m # 错误处理模块
├── HFBaseHTTPRequestTool.h/m # 请求工具类
└── Security/ # 安全模块
├── HFSecurity.h/m # 安全工具类
└── HFParamsRSAEncryptUtil.h/m # RSA加密工具
```
## 🔧 核心组件详解
### 1. HFBaseHTTPRequestManager
**核心请求管理器,采用单例模式**
- 管理不同类型的请求序列化器
- 提供统一的请求接口
- 支持HT、LJC等多种业务场景
### 2. HFHttpAbstractFactory
**抽象工厂接口,定义请求构建规范**
- 链式调用API设计
- 支持域名、路径、参数配置
- 提供GET、POST、文件上传等方法
### 3. HFHttpFactory
**基础工厂实现,提供通用请求逻辑**
- 实现抽象工厂接口
- 处理请求成功/失败回调
- 支持RSA加密开关
- 集成coobjc异步处理
### 4. 具体工厂类
- **HFHttpHtFactory**: HT业务专用
- **HFHttpLJCFactory**: LJC业务专用
- **HFHttpLJCSignFactory**: 带签名验证
- **HFHttpJustGetFactory**: 纯GET请求
- **HFHttpPushExtensionFactory**: 推送扩展
### 5. HFSecurity
**安全加密模块**
- RSA加密/解密
- AES加密/解密
- MD5哈希计算
- Base64编码/解码
### 6. HFURLSetting
**URL配置管理**
- 多环境域名配置
- 业务模块路径管理
- 动态URL构建
## 🚀 使用指南
### 基础使用
```objc
// 1. 基础POST请求
[[HFHttpFactory factory]
.setDomain(DOMAIN_USER)
.setPath(@"/api/login")
.setRequest(@{@"username": @"test", @"password": @"123456"})
.setResponseBlock(^(id resp) {
// 处理成功响应
HFHttpResonseModule *response = (HFHttpResonseModule *)resp;
NSLog(@"响应数据: %@", response.result);
})
.setErrorBock(^(id error) {
// 处理错误
NSLog(@"请求失败: %@", error);
})
.post];
// 2. 带RSA加密的请求
[[HFHttpFactory factory]
.setDomain(DOMAIN_USER)
.setPath(@"/api/sensitive")
.setRequest(@{@"data": @"sensitive_data"})
.setRsaSwitch(YES)
.setResponseBlock(^(id resp) {
// 处理响应
})
.post];
// 3. 文件上传
[[HFHttpFactory factory]
.setDomain(DOMAIN_FILE)
.setPath(@"/api/upload")
.setImageName(@"avatar")
.setImage(imageData)
.setMimeType(@"image/jpeg")
.setResponseBlock(^(id resp) {
// 处理上传成功
})
.singleUpload];
```
### 使用不同业务工厂
```objc
// HT业务请求
[[HFHttpHtFactory factory]
.setDomain(DOMAIN_HTBASE)
.setPath(@"/api/ht/data")
.setRequest(@{@"param": @"value"})
.setResponseBlock(^(id resp) {
// 处理HT业务响应
})
.post];
// LJC业务请求
[[HFHttpLJCFactory factory]
.setDomain(DOMAIN_FINANCE)
.setPath(@"/api/ljc/data")
.setRequest(@{@"param": @"value"})
.setResponseBlock(^(id resp) {
// 处理LJC业务响应
})
.post];
// 带签名的请求
[[HFHttpLJCSignFactory factory]
.setDomain(DOMAIN_Sign)
.setPath(@"/api/sign/data")
.setRequest(@{@"param": @"value"})
.setResponseBlock(^(id resp) {
// 处理带签名的响应
})
.post];
```
### 使用coobjc异步处理
```objc
// 异步请求处理
COPromise *promise = [[HFHttpFactory factory]
.setDomain(DOMAIN_USER)
.setPath(@"/api/async")
.setRequest(@{@"param": @"value"})
.coPost];
promise.then(^(COTuple *result) {
// 处理异步成功结果
id response = result.first;
NSLog(@"异步响应: %@", response);
return nil;
}).catch(^(NSError *error) {
// 处理异步错误
NSLog(@"异步错误: %@", error);
return nil;
});
```
## 🔄 请求流程图
```mermaid
sequenceDiagram
participant Client as 客户端
participant Factory as 工厂类
participant Manager as 请求管理器
participant Security as 安全模块
participant Network as 网络层
participant Response as 响应处理
Client->>Factory: 创建请求实例
Factory->>Factory: 配置请求参数
Factory->>Security: 检查是否需要加密
alt 需要RSA加密
Security->>Security: RSA加密参数
end
Factory->>Manager: 发送请求
Manager->>Network: 执行网络请求
Network-->>Manager: 返回响应
Manager->>Response: 处理响应
alt 请求成功
Response->>Factory: 返回成功数据
Factory->>Client: 调用成功回调
else 请求失败
Response->>Factory: 返回错误信息
Factory->>Client: 调用失败回调
end
```
## 📋 API 参考
### HFHttpAbstractFactory 接口
| 方法 | 说明 | 参数 |
|------|------|------|
| `setDomain` | 设置请求域名 | NSString *domain |
| `setPath` | 设置请求路径 | NSString *path |
| `setRequest` | 设置请求参数 | NSDictionary *para |
| `setImageName` | 设置图片名称 | NSString *imageName |
| `setImage` | 设置图片数据 | NSData *image |
| `setMimeType` | 设置MIME类型 | NSString *mimetype |
| `setResponseBlock` | 设置成功回调 | HFHttpSucceedBlock |
| `setErrorBock` | 设置失败回调 | HFHttpFailedBlock |
| `setRsaSwitch` | 设置RSA加密开关 | BOOL |
| `post` | 执行POST请求 | void |
| `get` | 执行GET请求 | void |
| `singleUpload` | 单文件上传 | void |
| `multiUpload` | 多文件上传 | void |
| `coPost` | 异步POST请求 | COPromise |
### HFBaseHTTPRequestManager 方法
| 方法 | 说明 | 参数 |
|------|------|------|
| `HTPOST` | HT POST请求 | URLString, parameters, success, failure |
| `LJCPOST` | LJC POST请求 | URLString, parameters, success, failure |
| `LJCSignPOST` | 带签名POST请求 | URLString, parameters, success, failure |
| `HTGET` | HT GET请求 | URLString, parameters, success, failure |
| `LJCGET` | LJC GET请求 | URLString, parameters, success, failure |
## 🔧 安装和配置
### CocoaPods 安装
```ruby
# Podfile
pod 'HFBaseHTTPRequestManagerModule'
```
### 手动安装
1. 下载源码
2. 将 `HFBaseHTTPRequestManagerModule` 文件夹添加到项目中
3. 添加依赖库:
- AFNetworking
- coobjc
### 环境配置
```objc
// 配置基础URL
[HFBaseHTTPRequestManager manager].baseURLDictionary = @{
DOMAIN_USER: @"https://api.example.com",
DOMAIN_FILE: @"https://file.example.com"
};
// 配置基础参数
[HFBaseHTTPRequestManager manager].baseParameters = @{
@"version": @"1.0.0",
@"platform": @"iOS"
};
// 开启签名功能
[HFBaseHTTPRequestManager manager].signEnabled = YES;
```
## 🛡️ 安全特性
### RSA加密
- 支持公钥加密
- 支持私钥解密
- 自动密钥管理
### AES加密
- AES-256加密算法
- 随机密钥生成
- 本地密钥存储
### MD5哈希
- 数据完整性验证
- 密码哈希处理
- 文件校验
## 🔍 错误处理
### 错误类型
- 网络连接错误
- 服务器响应错误
- 数据解析错误
- 加密解密错误
### 错误处理示例
```objc
.setErrorBock(^(id error) {
HFHttpError *httpError = (HFHttpError *)error;
switch (httpError.code) {
case NSURLErrorNotConnectedToInternet:
// 网络连接错误
break;
case NSURLErrorTimedOut:
// 请求超时
break;
default:
// 其他错误
break;
}
})
```
## 📝 更新日志
### v1.0.0
- 初始版本发布
- 支持基础网络请求功能
- 集成RSA/AES加密
- 支持多业务场景
## 🤝 贡献指南
1. Fork 项目
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 打开 Pull Request
## 📄 许可证
HFBaseHTTPRequestManagerModule 基于 MIT 许可证开源。详见 [LICENSE](LICENSE) 文件。
## 👨💻 作者
**hfqf123** - [hfqf123@126.com](mailto:hfqf123@126.com)
## 📞 联系方式
- 邮箱:hfqf123@126.com
- 项目地址:[GitHub](https://github.com/baiye/HFBaseHTTPRequestManagerModule)
---
**注意**: 使用前请确保已正确配置网络权限和HTTPS证书。