從蘋果系統自帶的請求類,到ASIHttpRequest第三方請求類,再到AFNetWorking第三方請求類,目前只要牽扯到數據請求,基本上都是用AFN,所以,這里純粹是記錄下:
hRequestTools.h
#import <Foundation/Foundation.h> /** * 網絡請求類型 */ typedef NS_ENUM(NSUInteger,HttpRequestType) { /** * get請求 */ HttpRequestTypeGet = 1, /** * post請求 */ HttpRequestTypePost = 2 }; @interface hRequestTools : NSObject /** * 發送網絡請求 * * @param URLString 請求的網址字符串 * @param parameters 請求的參數 * @param type 請求的類型 * @param success 請求的結果 */ + (void)requestWithURLString:(NSString *)URLString parameters:(id)parameters type:(HttpRequestType)type success:(void (^)(id responseObject))success failure:(void (^)(NSError *error))failure;
hRequestTools.m
#pragma mark 封裝的請求方法 + (void)requestWithURLString:(NSString *)URLString parameters:(id)parameters type:(HttpRequestType)type success:(void (^)(id responseObject))success failure:(void (^)(NSError *error))failure { AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; manager.responseSerializer = [AFHTTPResponseSerializer serializer]; manager.requestSerializer.timeoutInterval = 30.0f; switch (type) { case HttpRequestTypeGet: { [manager GET:URLString parameters:parameters progress:^(NSProgress * _Nonnull downloadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if (success) {
id jsons = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];
success(jsons);
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
if (failure) {
failure(error);
}
}];
} break; case HttpRequestTypePost: { [manager POST:URLString parameters:parameters progress:^(NSProgress * _Nonnull uploadProgress) {
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
if (success) {
id jsons = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil];
success(jsons);
}
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
if (failure) {
failure(error);
}
}];
} break; default: break; } }
請求里面如果要加緩存的話,可以和YYCache這個第三方配合使用,
關於YYCache,可以推薦幾個鏈接:http://www.jianshu.com/p/b8dcf6634fab