網絡封裝的緣由:網絡
開發者爲了開發方便,出現了大量的第三方的網絡請求,咱們除了在cocoapods中引入第三方的開源,同時還應該注意的一點是:若是第三方的網絡請求不更新了(好比ASI),或者網絡請求工具類在新版本出現了bug致使暫時沒法使用,咱們工程中存在大量的網絡請求,可能會致使咱們工程沒法運行,甚至致使工程須要從新走通,爲了這種解決這種突發情況的產生,咱們須要在網絡請求以前,進行簡單的封裝:工具
這裏咱們以AFNetworking爲例post
HttpTool.h中:url
#import <Foundation/Foundation.h>開發
@interface HttpTool : NSObjectget
/**io
* 發送一個GET請求import
*cocoapods
* @author <#author#>bug
*
* @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