网络封装的原因:
开发者为了开发方便,出现了大量的第三方的网络请求,我们除了在cocoapods中引入第三方的开源,同时还应该注意的一点是:如果第三方的网络请求不更新了(比如ASI),或者网络请求工具类在新版本出现了bug导致暂时无法使用,我们工程中存在大量的网络请求,可能会导致我们工程无法运行,甚至导致工程需要重新走通,为了这种解决这种突发状况的产生,我们需要在网络请求之前,进行简单的封装:
这里我们以AFNetworking为例
HttpTool.h中:
#import <Foundation/Foundation.h>
@interface HttpTool : NSObject
/**
* 发送一个GET请求
*
* @author <#author#>
*
* @since v<#version number#>
*
* @param url 请求路径
* @param params 请求参数
* @param success 请求成功后的回调(请将请求成功后想做的事情写到这个block块中)
* @param failure 请求失败后的回调(请将请求失败后想做的事情写到这个block块中)
*/
+ (void)get:(NSString *)url params:(NSDictionary *)params success:(void (^)(id respnseObj))success failure:(void(^)(NSError * error))failure;
/**
* 发送一个POST请求
*
* @author <#author#>
*
* @since v<#version number#>
*
* @param url 请求路径
* @param params 请求参数
* @param success 请求成功后的回调(请将请求成功后想做的事情写到这个block块中)
* @param failure 请求失败后的回调
*/
+ (void)post:(NSString *)url params:(NSDictionary *)params success:(void(^)(id respnseObj))success failure:(void(^)(NSError * error))failure;
@end
HttpTool.m中:
#import "HttpTool.h"
#import "AFNetworking.h"
@implementation HttpTool
+ (void)get:(NSString *)url params:(NSDictionary *)params success:(void (^)(id))success failure:(void (^)(NSError *))failure{
//1.获得请求管理者
AFHTTPRequestOperationManager * manager = [AFHTTPRequestOperationManager manager];
//发送GET请求
[manager GET:url parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
if (success) {
success(responseObject);
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
if (failure) {
failure (error);
}
}];
}
+ (void)post:(NSString *)url params:(NSDictionary *)params success:(void (^)(id))success failure:(void (^)(NSError *))failure{
//1.获得请求管理者
AFHTTPRequestOperationManager * manager = [AFHTTPRequestOperationManager manager];
//发送POST请求
[manager POST:url parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
if (success) {
success(responseObject);
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
if (failure) {
failure(error);
}
}];
}
@end