iOS基础之网络请求相关
2016-12-15 12:15
375 查看
1、AFNetwork二次封装方法一:
2、AFNetwork二次封装方法二:
3、网络请求取消相关:
取消请求:两种取消请求方式
#import <Foundation/Foundation.h> @interface BeeNetworkManager : NSObject /** * POST网络请求 * 每个请求都添加公共参数 */ + (void)POSTWithUrlString:(NSString *)urlString parameters:(NSMutableDictionary *)parameters success:(void (^)(id responseObject))success fail:(void (^)(NSError *error))fail; /** * GET网络请求 */ + (void)GETWithUrlString:(NSString *)urlString parameters:(NSMutableDictionary *)parameters success:(void (^)(id responseObject))success fail:(void (^)(NSError *error))fail; @end
#import "BeeNetworkManager.h" #import "AFNetworking.h" @interface BeeNetworkManager () @end @implementation BeeNetworkManager + (void)POSTWithUrlString:(NSString *)urlString parameters:(NSMutableDictionary *)parameters success:(void (^)(id responseObject))success fail:(void (^)(NSError *error))fail { // SDK封装 NSURLSessionConfiguration* configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; configuration.protocolClasses = @[[ICG_SDK protolClass]]; AFHTTPSessionManager* sessionManager = [[AFHTTPSessionManager alloc] initWithBaseURL:nil sessionConfiguration:configuration]; [sessionManager.tasks makeObjectsPerformSelector:@selector(cancel)]; NSString *urlStr = [BASE_URL stringByAppendingString:urlString]; if (parameters == nil) { parameters = [NSMutableDictionary dictionary]; } // 添加公共参数 parameters = [self addPublicParametersWithDictionary:parameters]; [sessionManager POST:urlStr parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { success(responseObject); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { fail(error); }]; } + (void)GETWithUrlString:(NSString *)urlString parameters:(NSMutableDictionary *)parameters success:(void (^)(id responseObject))success fail:(void (^)(NSError *error))fail { // SDK封装 NSURLSessionConfiguration* configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; configuration.protocolClasses = @[[ICG_SDK protolClass]]; AFHTTPSessionManager* sessionManager = [[AFHTTPSessionManager alloc] initWithBaseURL:nil sessionConfiguration:configuration]; sessionManager.responseSerializer = [AFHTTPResponseSerializer serializer]; [sessionManager.tasks makeObjectsPerformSelector:@selector(cancel)]; NSString *urlStr = [BASE_URL stringByAppendingString:urlString]; if (parameters == nil) { parameters = [NSMutableDictionary dictionary]; } parameters = [self addPublicParametersWithDictionary:parameters]; [sessionManager GET:urlStr parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { success(responseObject); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { fail(error); }]; } /*---------- 公共参数 ----------*/ + (NSMutableDictionary *)addPublicParametersWithDictionary:(NSMutableDictionary *)parameters { return parameters; } @end
2、AFNetwork二次封装方法二:
#import "AFHTTPSessionManager.h" @interface BeeCustomNetworkManager : AFHTTPSessionManager @end
#import "BeeCustomNetworkManager.h" @implementation BeeCustomNetworkManager + (instancetype)manager { return [[self alloc] initWithBaseURL:nil]; } - (instancetype)init { return [self initWithBaseURL:nil]; } - (instancetype)initWithBaseURL:(NSURL *)url { // SDK封装 NSURLSessionConfiguration* configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; configuration.protocolClasses = @[[ICG_SDK protolClass]]; return [self initWithBaseURL:url sessionConfiguration:configuration]; } - (NSURLSessionDataTask *)POST:(NSString *)URLString parameters:(id)parameters progress:(void (^)(NSProgress * _Nonnull))uploadProgress success:(void (^)(NSURLSessionDataTask * _Nonnull, id _Nullable))success failure:(void (^)(NSURLSessionDataTask * _Nullable, NSError * _Nonnull))failure { // 拼接URL NSString *urlStr = [BASE_URL stringByAppendingString:URLString]; // 设置公共参数 if (parameters == nil) { parameters = [NSMutableDictionary dictionary]; } parameters = [self addPublicParametersWithDictionary:parameters]; return [super POST:urlStr parameters:parameters progress:uploadProgress success:success failure:failure]; } - (NSURLSessionDataTask *)GET:(NSString *)URLString parameters:(id)parameters progress:(void (^)(NSProgress * _Nonnull))downloadProgress success:(void (^)(NSURLSessionDataTask * _Nonnull, id _Nullable))success failure:(void (^)(NSURLSessionDataTask * _Nullable, NSError * _Nonnull))failure { // 拼接URL NSString *urlStr = [BASE_URL stringByAppendingString:URLString]; // 设置公共参数 if (parameters == nil) { parameters = [NSMutableDictionary dictionary]; } parameters = [self addPublicParametersWithDictionary:parameters]; return [super GET:urlStr parameters:parameters progress:downloadProgress success:success failure:failure]; } /*---------- 公共参数 ----------*/ - (NSMutableDictionary *)addPublicParametersWithDictionary:(NSMutableDictionary *)parameters { return parameters; }
3、网络请求取消相关:
取消请求:两种取消请求方式
// 取消之前的所有请求,manager 还可以发请求 [self.manager.tasks makeObjectsPerformSelector:@selector(cancel)];
// 取消请求后,manager 再也不可用发请求了 [self.manager invalidateSessionCancelingTasks:YES];
相关文章推荐
- ios 网络请求总结加强对中文的处理 问题:URL不允许写中文 在GET请求中,相关代码段打断点以验证。
- iOS的网络请求相关知识
- iOS基础知识:Objective-C 之 网络请求
- iOS学习笔记-144.网络04——NSURLConnection01_相关基础
- 【iOS基础】iOS 网络请求
- iOS基础——网络请求之NSURLConnection、NSURLSessionDataTask
- IOS开发之—— 在AFN基础上进行的网络请求的封装
- iOS网络基础--发送同步、异步请求
- ios 网络请求基础
- iOS基础:网络相关
- iOS NSURLConnection基础网络请求封装
- ios获取网络请求失败相关数据
- iOS开发总结之block回调以AFN为基础封装的网络请求操作类
- IOS--网络请求基础
- iOS http网络请求相关知识总结
- iOS基础网络教程-Swift版本: 2.使用UIWebView请求数据
- iOS基础8:自定义MyData/自定义SQLite用于网络判断,版本判断,图片缓存处理,下载或者上传的GET或POST请求,加密手段,.数据解析
- IOS 京东相关app 出现“网络请求失败,请检查您的网络设置”的解决办法
- iOS开发那些事-iOS网络编程异步GET方法请求编程
- iOS音频的后台播放总结(后台网络请求歌曲,Remote控制,锁屏封面,各种打断)