iOS開(kāi)發(fā):對(duì)AFNetworking進(jìn)行封裝

網(wǎng)上也有很多的對(duì)AFNetworking進(jìn)行封裝的方法,此處我只是簡(jiǎn)單的記錄一下;

首先,我們創(chuàng)建一個(gè)繼承與NSObject的類(lèi),定義兩個(gè)屬性,分別是請(qǐng)求成功和請(qǐng)求失敗的,.h中的代碼如下:

#import <Foundation/Foundation.h>

typedef void (^SuccessBlock)(NSDictionary *data);
typedef void (^FailureBlock)(NSError *error);

@interface SYNetworkingManager : NSObject

@property (nonatomic, copy) SuccessBlock successBlock;
@property (nonatomic, copy) FailureBlock failureBlock;

/**
 *  發(fā)送get請(qǐng)求
 *
 *  @param URLString  請(qǐng)求的網(wǎng)址字符串
 *  @param parameters 請(qǐng)求的參數(shù)
 *  @param success    請(qǐng)求成功的回調(diào)
 *  @param failure    請(qǐng)求失敗的回調(diào)
 */
+ (void)getWithURLString:(NSString *)urlString
              parameters:(id)parameters
                 success:(SuccessBlock)successBlock
                 failure:(FailureBlock)failureBlock;

/**
 *  發(fā)送post請(qǐng)求
 *
 *  @param URLString  請(qǐng)求的網(wǎng)址字符串
 *  @param parameters 請(qǐng)求的參數(shù)
 *  @param success    請(qǐng)求成功的回調(diào)
 *  @param failure    請(qǐng)求失敗的回調(diào)
 */
+ (void)postWithURLString:(NSString *)urlString
               parameters:(id)parameters
                  success:(SuccessBlock)successBlock
                  failure:(FailureBlock)failureBlock;

@end

.m中的實(shí)現(xiàn)如下:

+ (void)getWithURLString:(NSString *)urlString
              parameters:(id)parameters
                 success:(SuccessBlock)successBlock
                 failure:(FailureBlock)failureBlock
{
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    /**
     *  可以接受的類(lèi)型
     */
    manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    /**
     *  請(qǐng)求隊(duì)列的最大并發(fā)數(shù)
     */
    //    manager.operationQueue.maxConcurrentOperationCount = 5;
    /**
     *  請(qǐng)求超時(shí)的時(shí)間
     */
    manager.requestSerializer.timeoutInterval = outTime;
    [manager GET:urlString parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        if (successBlock) {
            NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableLeaves error:nil];
            successBlock(dic);
        }
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        if (failureBlock) {
            failureBlock(error);
            NSLog(@"網(wǎng)絡(luò)異常 - T_T%@", error);
        }
    }];
}

+ (void)postWithURLString:(NSString *)urlString
               parameters:(id)parameters
                  success:(SuccessBlock)successBlock
                  failure:(FailureBlock)failureBlock
{
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    manager.requestSerializer.timeoutInterval = outTime;
    [manager POST:urlString parameters:parameters progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        if (successBlock) {
            NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableLeaves error:nil];
            successBlock(dic);
        }
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        if (failureBlock) {
            failureBlock(error);
            NSLog(@"網(wǎng)絡(luò)異常 - T_T%@", error);
        }
    }];
}

以上只是對(duì)post和get請(qǐng)求的封裝,如果有好的建議和好的文章,我很樂(lè)意學(xué)習(xí)!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,694評(píng)論 4 61
  • iOS開(kāi)發(fā)系列--網(wǎng)絡(luò)開(kāi)發(fā) 概覽 大部分應(yīng)用程序都或多或少會(huì)牽扯到網(wǎng)絡(luò)開(kāi)發(fā),例如說(shuō)新浪微博、微信等,這些應(yīng)用本身可...
    lichengjin閱讀 4,060評(píng)論 2 7
  • 我們不是在做導(dǎo)彈發(fā)射系統(tǒng),請(qǐng)不要太在意精度 setTimeout的那些事 inweb社區(qū)
    一言不合拔蘿卜閱讀 279評(píng)論 0 0
  • 一千多年前,唐朝初年,也許正是一個(gè)月圓之夜,春風(fēng)暖暖的吹拂,平靜的江面上一輪明月倒映水中。江畔的詩(shī)人面對(duì)江月,生發(fā)...
    繁花落盡深眸閱讀 1,068評(píng)論 6 14
  • 期待已久的特種兵訓(xùn)練終于今天拉開(kāi)帷幕!懷著很激動(dòng),很期待的心情參加到特訓(xùn)當(dāng)中!我是我們2組巔峰戰(zhàn)隊(duì)的組長(zhǎng),壓力真的...
    付愛(ài)寶王楠閱讀 258評(píng)論 0 0

友情鏈接更多精彩內(nèi)容