// // QXRequset.h // YSDTrucksProject // // Created by 党凯 on 2020/7/1. // Copyright © 2020 党凯. All rights reserved. // #import //无网络 #define NOT_NETWORK_ERROR [NSError errorWithDomain:@"com.wufeng.Networking.ErrorDomain" code:-999 userInfo:@{NSLocalizedDescriptionKey:@"无网络"}] typedef NS_ENUM(NSUInteger, NetworkMethod) { GET = 0, POST, PUT, DELETE, PATCH }; typedef NS_ENUM(NSUInteger, RequestCachePolicy) { /** 正在刷新中的状态 */ CacheDataThenLoad = 0, // 有缓存就先返回缓存,同步请求数据 IgnoringLocalCacheData, // 忽略缓存,重新请求 CacheDataElseLoad, // 有缓存就用缓存,没有缓存就重新请求(用于数据不变时) CacheDataDontLoad, // 有缓存就用缓存,没有缓存就不发请求,当做请求出错处理(用于离线模式) }; typedef void (^NeQXRequsetSuccessBlock)(id responseObject); //成功Block typedef void (^NeQXRequsetCacheSuccessBlock)(id responseObject, BOOL isCache); //缓存成功Block typedef void (^NeQXRequsetFailedBlock)(NSError * error,NSString * msg,NSURLSessionDataTask * task);//失败Block typedef void (^NeQXRequsetProgressBlock)(float progress); //进度Block typedef void (^NetResponseCache)(id responseObject); typedef void (^QXDownloadCompletionHandler)(NSURLResponse *response, NSURL * filePath, NSError * error); @interface QXRequset : NSObject +(instancetype _Nonnull )shareInstance; /** * 当前的网络状态 */ @property (nonatomic, assign,readonly) AFNetworkReachabilityStatus AFNetWorkStatus; /** * 请求者 */ @property (nonatomic, strong) AFHTTPSessionManager * _Nonnull sharedManager; /** 请求 @param urlString url @param parameters 参数 @param type 请求类型 @param policy 缓存策略 @param success 成功 @param cache 缓存 @param fail 失败 */ - (NSURLSessionTask*_Nullable)requestWithUrl:(NSString *_Nonnull)urlString parameters:(id _Nonnull)parameters type:(NetworkMethod)type cachePolicy:(RequestCachePolicy)policy success:(NeQXRequsetSuccessBlock _Nonnull)success cache:(NetResponseCache)cache failure:(NeQXRequsetFailedBlock _Nonnull)fail; /** * Get形式提交数据 * * @param urlString Url * @param parameters 参数 * @param success 成功Block * @param fail 失败Block */ - (NSURLSessionTask*_Nullable)getWithUrl:(NSString *_Nonnull)urlString parameters:(id _Nonnull)parameters needCache:(BOOL)needCache success:(NeQXRequsetSuccessBlock _Nonnull)success fail:(NeQXRequsetFailedBlock _Nonnull)fail; /** * Post形式提交数据 * * @param urlString Url * @param parameters 参数 * @param success 成功Block * @param fail 失败Block */ - (NSURLSessionTask*_Nonnull)postWithUrl:(NSString * _Nonnull)urlString parameters:(id _Nonnull)parameters needCache:(BOOL)needCache success:(NeQXRequsetSuccessBlock _Nonnull)success fail:(NeQXRequsetFailedBlock _Nonnull)fail; /** * Put形式提交数据 * * @param urlString Url * @param parameters 参数 * @param success 成功Block * @param fail 失败Block */ - (NSURLSessionTask*_Nullable)putWithUrl:(NSString * _Nonnull)urlString parameters:(id _Nonnull)parameters needCache:(BOOL)needCache success:(NeQXRequsetSuccessBlock _Nonnull)success fail:(NeQXRequsetFailedBlock _Nonnull)fail; /** * Delete形式提交数据 * * @param urlString Url * @param parameters 参数 * @param success 成功Block * @param fail 失败Block */ - (NSURLSessionTask*_Nullable)deleteWithUrl:(NSString *_Nonnull)urlString parameters:(id _Nonnull)parameters needCache:(BOOL)needCache success:(NeQXRequsetSuccessBlock _Nonnull)success fail:(NeQXRequsetFailedBlock _Nonnull)fail; /** * Patch形式提交数据 * * @param urlString Url * @param parameters 参数 * @param success 成功Block * @param fail 失败Block */ - (NSURLSessionTask*_Nullable)patchWithUrl:(NSString *_Nonnull)urlString parameters:(id _Nonnull)parameters needCache:(BOOL)needCache success:(NeQXRequsetSuccessBlock _Nonnull)success fail:(NeQXRequsetFailedBlock _Nonnull)fail; /** * POST上传图片 * * @param urlString 上传地址 * @param image 图片 * @param parameters 参数 * @param success 成功Block * @param fail 失败Block */ - (NSURLSessionTask*_Nullable)postUploadImageWithUrl:(NSString *_Nonnull)urlString image:(UIImage *_Nonnull)image parameters:(id _Nonnull)parameters progress:(NeQXRequsetProgressBlock _Nonnull )progress success:(NeQXRequsetSuccessBlock _Nullable )success fail:(NeQXRequsetFailedBlock _Nonnull )fail; /** * 下载礼物 * * @param url 礼物地址 */ - (void)downloadVideoPlayerWithUrl:(NSString *_Nullable)url completion:(void (^_Nullable)(BOOL result, NSString * _Nonnull fileName))completion; @end