SkillAgentSearch skills...

BRNetwork

BRNetwork 是一个iOS轻量级网络请求库,封装了网络请求、本地数据缓存与SSE流式通信。 BRNetwork:是一个基于AFNetworking封装的轻量级网络请求工具; BRNetworkYY:是基于BRNetwork并二次封装YYCache,整合了数据缓存功能; BRNetworkSSE:是一个基于SSE(Server-Sent Events)协议封装的网络请求类,专为AI大模型的流式数据响应设计,支持实时接收模型返回的数据流。

Install / Use

/learn @agiapp/BRNetwork
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

BRNetwork

BRNetwork 是一个iOS轻量级网络请求库,封装了网络请求、本地数据缓存与SSE流式通信。

  • BRNetwork:是一个基于AFNetworking封装的轻量级网络请求工具;

  • BRNetworkYY:是基于BRNetwork并二次封装YYCache,整合了数据缓存功能;

  • BRNetworkSSE:是一个基于SSE(Server-Sent Events)协议封装的网络请求类,专为AI大模型的流式数据响应设计,支持实时接收模型返回的数据流。

安装

CocoaPods

  1. 在 Podfile 中添加 pod 'BRNetwork'
  2. 执行 pod installpod update
  3. 导入头文件 #import <BRNetwork.h>

安装说明,默认是集成全部功能,也可以选择性集成:

① 使用基础网络请求:pod 'BRNetwork/Core'

② 使用基础网络请求+数据缓存:pod 'BRNetwork/YY'

③ 使用AI大模型SSE流式请求:pod 'BRNetwork/SSE'

手动导入

  1. 将与 README.md 同级目录下的 BRNetwork 文件夹拽入项目中
  2. 导入头文件 #import "BRNetwork.h"

系统要求

  • iOS 9.0+
  • ARC

使用

1. BRNetwork:基础网络请求

@interface BRNetwork : NSObject

/** 设置接口根路径 */
+ (void)setBaseUrl:(nullable NSString *)baseUrl;
/** 获取接口根路径 */
+ (nullable NSString *)baseUrl;

/** 设置接口基本参数/公共参数(如:用户ID, Token) */
+ (void)setBaseParameters:(nullable NSDictionary *)params;
/** 获取接口基本参数/公共参数(如:用户ID, Token) */
+ (nullable NSDictionary *)baseParameters;

/** 加密接口参数/加密Body */
+ (void)setEncodeParameters:(nullable NSDictionary *)params;
/** 获取加密接口参数/加密Body */
+ (nullable NSDictionary *)encodeParameters;

/** 是否开启日志打印 */
+ (void)setIsOpenLog:(BOOL)isOpenLog;
/** 获取是否开启日志打印 */
+ (BOOL)isOpenLog;

/** 是否需要加密传输 */
+ (void)setIsNeedEncry:(BOOL)isNeedEncry;
/** 获取是否需要加密传输 */
+ (BOOL)isNeedEncry;

/** 设置请求超时时间(默认30s) */
+ (void)setRequestTimeoutInterval:(NSTimeInterval)timeout;

/** 请求序列化类型 */
+ (void)setRequestSerializerType:(BRRequestSerializer)type;

/** 响应序列化类型 */
+ (void)setResponseSerializerType:(BRResponseSerializer)type;

/**
 *  设置自建证书的Https请求
 *
 *  @param cerPath 自建https证书路径
 *  @param validatesDomainName 是否验证域名(默认YES) 如果证书的域名与请求的域名不一致,需设置为NO
 */
+ (void)setSecurityPolicyWithCerPath:(NSString *)cerPath validatesDomainName:(BOOL)validatesDomainName;

/**
 *  GET请求方法
 *
 *  @param url 请求地址
 *  @param params 请求参数
 *  @param headers 请求头
 *  @param successBlock 请求成功的回调
 *  @param failureBlock 请求失败的回调
 */
+ (void)getWithUrl:(NSString *)url
            params:(nullable id)params
           headers:(nullable NSDictionary *)headers
           success:(nullable BRHttpSuccessBlock)successBlock
           failure:(nullable BRHttpFailureBlock)failureBlock;

/**
 *  POST请求方法
 *
 *  @param url 请求地址
 *  @param params 请求参数
 *  @param headers 请求头
 *  @param successBlock 请求成功的回调
 *  @param failureBlock 请求失败的回调
 */
+ (void)postWithUrl:(NSString *)url
            params:(nullable id)params
           headers:(nullable NSDictionary *)headers
           success:(nullable BRHttpSuccessBlock)successBlock
           failure:(nullable BRHttpFailureBlock)failureBlock;

/**
 *  网络请求公共方法
 *
 *  @param method 请求方法
 *  @param url 请求地址
 *  @param params 请求参数
 *  @param headers 请求头
 *  @param successBlock 请求成功的回调
 *  @param failureBlock 请求失败的回调
 */
+ (void)requestWithMethod:(BRRequestMethod)method
                      url:(NSString *)url
                   params:(nullable id)params
                  headers:(nullable NSDictionary *)headers
                  success:(nullable BRHttpSuccessBlock)successBlock
                  failure:(nullable BRHttpFailureBlock)failureBlock;

/**
 *  下载文件
 *
 *  @param url              请求地址
 *  @param cachePath        文件下载的缓存目录
 *  @param progressBlock    下载进度的回调
 *  @param successBlock     下载成功的回调
 *  @param failureBlock     下载失败的回调
 *
 */
+ (void)downloadFileWithUrl:(NSString *)url
                  cachePath:(NSString *)cachePath
                   progress:(nullable void(^)(NSProgress *progress))progressBlock
                    success:(nullable void(^)(NSString *filePath))successBlock
                    failure:(nullable void(^)(NSError *error))failureBlock;

/**
 *  上传文件(传入的是:文件二进制数据)
 *
 *  @param url              请求地址
 *  @param params           请求参数
 *  @param headers          请求头
 *  @param fileData         文件二进制数据
 *  @param name             表单中文件数据的参数名(即文件数据对应的key,如:file,upload等),服务器端接收文件的参数名
 *  @param fileName         自定义上传到服务器的文件名称
 *  @param mimeType         上传文件的 MIME 类型。MIME 类型描述了文件的内容类型。例如:image/jpeg 或 image/png 等。
 *  @param progressBlock    上传进度的回调
 *  @param successBlock     请求成功的回调
 *  @param failureBlock     请求失败的回调
 *
 */
+ (void)uploadFileWithUrl:(NSString *)url
                   params:(nullable id)params
                  headers:(nullable NSDictionary *)headers
                 fileData:(NSData *)fileData
                     name:(NSString *)name
                 fileName:(NSString *)fileName
                 mimeType:(NSString *)mimeType
                 progress:(nullable void(^)(NSProgress *progress))progressBlock
                  success:(nullable BRHttpSuccessBlock)successBlock
                  failure:(nullable BRHttpFailureBlock)failureBlock;

/**
 *  上传多个文件(传入的是:文件二进制数据)
 *
 *  @param url              请求地址
 *  @param params           请求参数
 *  @param headers          请求头
 *  @param fileDatas        文件二进制数据
 *  @param name             表单中文件数据的参数名(即文件数据对应的key,如:file,upload等),服务器端接收文件的参数名
 *  @param fileName         自定义上传到服务器的文件名称
 *  @param mimeType         上传文件的 MIME 类型。MIME 类型描述了文件的内容类型。例如:image/jpeg 或 image/png 等。
 *  @param progressBlock    上传进度的回调
 *  @param successBlock     请求成功的回调
 *  @param failureBlock     请求失败的回调
 *
 */
+ (void)uploadFilesWithUrl:(NSString *)url
                    params:(nullable id)params
                   headers:(nullable NSDictionary *)headers
                 fileDatas:(NSArray<NSData *> *)fileDatas
                      name:(NSString *)name
                  fileName:(NSString *)fileName
                  mimeType:(NSString *)mimeType
                  progress:(nullable void(^)(NSProgress *progress))progressBlock
                   success:(nullable BRHttpSuccessBlock)successBlock
                   failure:(nullable BRHttpFailureBlock)failureBlock;

/**
 *  上传文件(传入的是:本地文件路径,按文件原名称上传到服务器)
 *
 *  @param url              请求地址
 *  @param params           请求参数
 *  @param headers          请求头
 *  @param filePath         文件本地沙盒路径
 *  @param name             表单中文件数据的参数名(即文件数据对应的key,如:file,upload等),服务器端接收文件的参数名
 *  @param progressBlock    上传进度的回调
 *  @param successBlock     请求成功的回调
 *  @param failureBlock     请求失败的回调
 *
 */
+ (void)uploadFileWithUrl:(NSString *)url
                   params:(nullable id)params
                  headers:(nullable NSDictionary *)headers
                 filePath:(NSString *)filePath
                     name:(NSString *)name
                 progress:(nullable void(^)(NSProgress *progress))progressBlock
                  success:(nullable BRHttpSuccessBlock)successBlock
                  failure:(nullable BRHttpFailureBlock)failureBlock;

/**
 *  上传图片
 *
 *  @param url              请求地址
 *  @param params           请求参数
 *  @param headers          请求头
 *  @param image            图片对象
 *  @param name             表单中文件数据的参数名(即文件数据对应的key,如:file,upload等),服务器端接收文件的参数名
 *  @param progressBlock    上传进度的回调
 *  @param successBlock     请求成功的回调
 *  @param failureBlock     请求失败的回调
 *
 */
+ (void)uploadImageWithUrl:(NSString *)url
                    params:(nullable id)params
                   headers:(nullable NSDictionary *)headers
                     image:(UIImage *)image
                      name:(NSString *)name
                  progress:(nullable void(^)(NSProgress *progress))progressBlock
                   success:(nullable BRHttpSuccessBlock)successBlock
                   failure:(nullable BRHttpFailureBlock)failureBlock;

/**
 *  上传多个图片
 *
 *  @param url              请求地址
 *  @param params           请求参数
 *  @param headers          请求头
 *  @param images           图片对象数组
 *  @param name             表单中文件数据的参数名(即文件数据对应的key,如:file,upload等),服务器端接收文件的参数名
 *  @param progressBlock    上传进度的回调
 *  @param successBlock     请求成功的回调
 *  @param failureBlock     请求失败的回调
 *
 */
+ (void)uploadImagesWithUrl:(NSString *)url
                    params:(nullable id)params
                   headers:(nullable NSDictionary *)headers
                    images:(NSArray<UIImage *> *)images
                      name:(NSString *)name
                   progress:(nullable void(^)(NSProgress *progress))progressBlock
                    success:(nullable BRHttpSuccessBlock)successBlock
                    failure:(nullable BRHttpFailureBlock)failureBlock;

/** 取消所有Http请求 */
+ (void)cancelAllRequest;

/** 取消指定URL的Http请求 */
+ (void)cancelRequestWithURL:(NSString *)url;

/** 实时获取网络状态 */
+ (void)getNetworkStatusWithBlock:(BRNetworkStatusBlock)networkStatusBlock;

/** 是否打开网络加载菊花(默认打开) */
+ (void)openNetworkActivityIndicator:(BOOL)open;

/** 判断当前是否有网络连接 */
+ (BOOL)isNetwork;

/** 判断当前是否是手机网络 */
+ (BOOL)isWWANNetwork;

/** 判断当前是否是WIFI网络 */
+ (BOOL)isWiFiNetwork;

@end

2. BRNetworkYY:基础网络请求+本地数据缓存

#import "BRNetwork.h"

/** 缓存方式 */
typedef NS_ENUM(NSUInteger, BRCachePolicy) {
    /** 仅从网络获取数据 */
    BRCachePolicyNetworkOnly = 0,
    /** 先从网络获取数据,再更新本地缓存 */
    BRCachePolicyNetworkAndSaveCache,
    /** 先从网络获取数据,再更新本地缓存,如果网络获取失败还会从缓存获取 */
    BRCachePolicyNetworkElseCache,
    /** 仅从缓存获取数据 */
    BRCachePolicyCacheOnly,
    /** 先从缓存获取数据,如果没有再获取网络数据,网络数据获取成功后更新本地缓存 */
    BRCachePolicyCacheElseNetwork,
    /** 先从缓存获取数据,同时再获取网络数据并更新本地缓存,如果本地不存在缓存就返回网络获取的数据 */
    BRCachePolicyCacheAndNetwork,
    /** 先从缓存读取数据,然后在从网络获取并且缓存,在这种情况下,Block将产生两次调用 */
    BRCachePolicyCacheThenNetwork
};

NS_ASSUME_NONNULL_BEGIN

@interface BRNetworkYY : BRNetwork

/**
 *  GET请求方法
 *
 *  @param url 请求地址
 *  @param params 请求参数
 *  @param headers 请求头
 *  @param cachePolicy 缓存策略
 *  @param successBlock 请求成功的回调
 *  @param failureBlock 请求失败的回调
 */
+ (void)getWithUrl:(NSString *)url
            params:(nullable id)params
           headers:(nullable NSDictionary *)headers
       cachePolicy:(BRCachePolicy)cachePolicy
           success:(nullable BRHttpSuccessBlock)successBlock
           failure:(nullable BRHttpFailureBlock)failureBlock;

/**
 *  POST请求方法
 *
 *  @param url 请求地址
 *  @param params 请求参数
 *  @param headers 请求头
 *  @param cachePolicy 缓存策略
 *  @param successBlock 请求成功的回调
 *  @param failureBlock 请求失败的回调

Related Skills

View on GitHub
GitHub Stars62
CategoryDevelopment
Updated3mo ago
Forks17

Languages

Objective-C

Security Score

92/100

Audited on Dec 12, 2025

No findings