ios開發之--使用AFNetWorking 3.1.0 ,簡單的請求封裝類


從蘋果系統自帶的請求類,到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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM