# 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 [![CI Status](https://img.shields.io/travis/baiye/HFBaseHTTPRequestManagerModule.svg?style=flat)](https://travis-ci.org/baiye/HFBaseHTTPRequestManagerModule) [![Version](https://img.shields.io/cocoapods/v/HFBaseHTTPRequestManagerModule.svg?style=flat)](https://cocoapods.org/pods/HFBaseHTTPRequestManagerModule) [![License](https://img.shields.io/cocoapods/l/HFBaseHTTPRequestManagerModule.svg?style=flat)](https://cocoapods.org/pods/HFBaseHTTPRequestManagerModule) [![Platform](https://img.shields.io/cocoapods/p/HFBaseHTTPRequestManagerModule.svg?style=flat)](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证书。