WHNetwork
最新版不能使用pod。 直接把WHNetwork拖入工程,配置好接口直接使用。 配置使用方法如下。
1. 在WHNetApi.h 中定义主机
#define kBaseUrl @"http://httpbin.org/"
2. 在WHNetApi.h 中定义接口。
在'方法列表' 枚举 WHApi 中定义接口名
/** 配置Api */
typedef NS_ENUM(NSUInteger, WHApi) {
WHApiTest,
WHApiTest2,
};
3. 在WHNetApi.m 中配置接口
#pragma mark -
#pragma mark - 请求路径
/******************************** 请求路径 ************************************/
- (void)configPath {
paths = @{
ApiKey(WHApiTest) : @"get",
ApiKey(WHApiTest2): @"post",
};
}
#pragma mark -
#pragma mark - 请求方式: GET/POST (不填的话默认POST)
/***************************** 请求方式: GET/POST ********************************/
- (void)configRequestMethod {
requestMethods = @{
ApiKey(WHApiTest) : @(WHRequestMethodGet),
};
}
4. 调用接口
直接通过类方法调用。
// 根据定义的API发起请求
[WHNetwork startWithApi:WHApiTest parameters:@{@"123" : @"123"} success:^(id _Nonnull aResponseObject, WHNetRequest * _Nonnull request) {
} failure:^(NSError * _Nonnull error, WHNetRequest * _Nonnull request) {
}];
5. 在 WHNetRequest.m 中定义公用参数
直接在下面的方法中定义。
// 下面的@{@"default param" : @"default param"}就是公用参数,每个请求都会携带
- (void)setRequestParameters:(NSDictionary *)requestParameters {
NSMutableDictionary *mutableDict = [NSMutableDictionary dictionaryWithDictionary:@{@"default param" : @"default param"}];
[mutableDict addEntriesFromDictionary:requestParameters];
_requestParameters = mutableDict.copy;
}
6. 全局配置 WHNetConfig.h
WHNetConfig.h 是一个单例,用来设置网络请求的基本配置(有默认值),例如超时时间等。修改其属性值,即修改了所有网络请求的默认配置。
// 网络模块是否打印,默认打印
@property (nonatomic, assign) BOOL enableLog;
// 网络请求状态提示,默认打开
@property (nonatomic, assign) BOOL openIndicator;
// GET/POST,默认POST
@property (nonatomic, assign) WHRequestMethod method;
// 超时时间,默认30秒
@property (nonatomic, assign) NSTimeInterval timeoutInterval;
// 缓存策略,默认不缓存
@property (nonatomic, assign) WHRequestCachePolicy cachepolicy;
// 请求优先级,默认常规
@property (nonatomic, assign) WHRequestPriority priority;
// 请求反序列化,默认HTTP
@property (nonatomic, assign) WHRequestSerializer requestSerializerType;
// 响应反序列化,默认JSON
@property (nonatomic, assign) WHResponseSerializer responseSerializerType;
// 重置配置
- (void)resetConfig;
7. 自定义Request
如果不想通过api的方式发起请求,也可以自定义网络请求。
7.1. 创建request
WHNetRequest *request = [[WHNetRequest alloc] init]
可以自定义一些基本的网络配置,例如超时时间等
request.timeoutInterval = 60;
7.2. 根据请求类型设置属性
7.2.1 普通网络请求:
requtest.urlString(必须)接口url
requtest.method(必须,默认GET)请求方式
requtest.requestParameters(可选)参数
注意:!!!
普通网络请求不可设置uploadImage,localFilePath,downloadedPath这三个与上传或下载有关的属性
7.2.2 上传图片:
requtest.urlString(必须)接口url
request.uploadName(必须)服务器上传字段 name
request.uploadImage(必须)上传的图片
request.uploadedImageName(可选)上传图片到服务器的名称。如果不传,默认使用当前时间命名
request.requestParameters(可选)参数
7.2.3 上传文件
requtest.urlString(必须)接口url
request.uploadName(必须)服务器上传字段 name
requtest.localFilePath(必须)将要上传文件的本地路径
request.requestParameters(可选)参数
7.2.4 下载
requtest.urlString(必须)将要下载的文件url
requtest.downloadedPath(可选)本地保存文件路径(默认在Document路径下Download中)
7.3. 发起网络请求
自定义好request之后,通过manager中的startWithRequest方法发起请求。
- (NSNumber *)startWithRequest:(YWNetworkRequest *)request Success:(YWNetworkSuccess)successHandler Failure:(YWNetworkFailure)failureHandler;
直接通过类方法调用,接口方法如下
/**
根据Api发起一个网络请求
内部使用默认的网络配置
@param api Api
@param parameters 参数
@param successHandler 成功回调
@param failureHandler 失败回调
@return 请求ID
*/
+ (NSNumber *)startWithApi:(WHApi)api
parameters:(NSDictionary *)parameters
success:(WHNetSuccess)successHandler
failure:(WHNetFailure)failureHandler;
/**
发起自定义Request的网络请求 WHNetRequest有根据Api的构造方法
可以在request中自定义请求配置,例如超时时间等
@param request 自定义的request
@param successHandler 成功回调
@param failureHandler 失败回调
@return 请求ID
*/
+ (NSNumber *)startWithRequest:(WHNetRequest *)request
success:(WHNetSuccess)successHandler
failure:(WHNetFailure)failureHandler;
/**
根据api上传单张图片
在WHNetApi.m中配置好信息
@param api 上传图片api
@param image 上传的图片
@param name 服务器上传字段
@param imageType 图片类型 PNG/JPG
@param scale 缩放比例 0.0 ~ 1.0 (1.0代表不缩放)
@param serverImageName 上传到服务器之后的名称,只需传入名称,不用后缀。如果不传,默认使用当前时间命名
@param parameters 参数
@param successHandler 成功回调
@param failureHandler 失败回调
@return 请求ID
*/
+ (NSNumber *)uploadImageWith:(WHApi)api
image:(UIImage *)image
name:(NSString *)name
imageType:(WHUploadImageType)imageType
scale:(CGFloat)scale
serverImageName:(NSString *)serverImageName
parameters:(NSDictionary *)parameters
success:(WHNetSuccess)successHandler
failure:(WHNetFailure)failureHandler;
/**
根据api批量上传图片
在WHNetApi.m中配置好信息
@param api 上传图片api
@param images 要上传的图片数组
@param name 服务器上传字段
@param imageType 上传图片类型 PNG/JPG
@param scale 缩放比例
@param serverImageNames 上传到服务器之后的名称数组,只需传入名称,不用后缀。如果不传,默认使用当前时间命名
@param parameters 参数
@param successHandler 成功回调
@param failureHandler 失败回调
*/
+ (void)uploadImagesWith:(WHApi)api
images:(NSArray<UIImage *> *)images
name:(NSString *)name
imageType:(WHUploadImageType)imageType
scale:(CGFloat)scale
serverImageNames:(NSArray<NSString *> *)serverImageNames
parameters:(NSDictionary *)parameters
success:(WHNetSuccess)successHandler
failure:(WHNetFailure)failureHandler;
/**
根据Api上传文件
在WHNetApi.m中配置好信息
@param api 上传文件的api
@param localFilePath 要上传文件的本地路径
@param name 服务器上传字段
@param parameters 参数
@param successHandler 成功回调
@param failureHandler 失败回调
@return 请求ID
*/
+ (NSNumber *)uploadFileWith:(WHApi)api
localFilePath:(NSString *)localFilePath
name:(NSString *)name
parameters:(NSDictionary *)parameters
success:(WHNetSuccess)successHandler
failure:(WHNetFailure)failureHandler;
/**
下载
@param URL 下载的url
@param localFilePath 下载到的路径(可为nil,默认在Document目录下的Download中)
@param progress 进度
@param successHandler 成功回调,block中的参数为存储路径
@param failureHandler 失败回调
@return 请求ID
*/
+ (NSNumber *)downloadWithURL:(NSString *)URL
localFilePath:(NSString *)localFilePath
progress:(WHNetProgress)progress
success:(void(^)(NSString *downloadedFilePath, WHNetRequest *request))successHandler
failure:(WHNetFailure)failureHandler;
/**
GET请求
@param URL 请求域名
@param parameters 参数
@param successHandler 成功回调
@param failureHandler 失败回调
@return 请求ID
*/
+ (NSNumber *)GET:(NSString *)URL
parameters:(id)parameters
success:(WHNetSuccess)successHandler
failure:(WHNetFailure)failureHandler;
/**
POST请求
@param URL 请求域名
@param parameters 参数
@param successHandler 成功回调
@param failureHandler 失败回调
@return 请求ID
*/
+ (NSNumber *)POST:(NSString *)URL
parameters:(id)parameters
success:(WHNetSuccess)successHandler
failure:(WHNetFailure)failureHandler;
/**
根据请求ID取消请求
@param requestID 请求ID
*/
+ (void)stopWithRequestID:(NSNumber *)requestID;
/**
取消所有网络请求
*/
+ (void)stopAllRequest;
/**
监听网络状态
@param callback 网络状态的回调
*/
+ (void)netStatus:(NetStatusBlock)callback;