iOS網(wǎng)絡(luò)請求工具類

相信很多小伙伴都在為進行網(wǎng)絡(luò)請求的數(shù)據(jù)處理之類的煩惱吧,下面就為小伙伴們分享自己開發(fā)過程中的網(wǎng)絡(luò)請求工具類吧,直接上源碼(這里的 JYLOG是自定義的輸出,小伙伴們可以替換或者注釋)

+ (void)networkRequestGET:(NSString *)url
               parameters:(NSDictionary *)parameters
                  success:(void(^)(id object))success
                  failure:(void(^)(id error))failure{
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    manager.requestSerializer = [AFJSONRequestSerializer serializer];
    manager.responseSerializer = [AFJSONResponseSerializer serializer];
    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",@"text/json", @"text/plain", @"text/html", nil];
    
    [manager GET:url parameters:parameters progress:^(NSProgress * _Nonnull uploadProgress) {
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        if ([responseObject isKindOfClass:[NSDictionary class]]) {
            
            responseObject = WWJSONObjectResetNullValue(responseObject, NSJSONReadingAllowFragments);
            
            
            NSDictionary *state = responseObject[kResponseState];
            NSInteger status = [state[kResponseStatus]integerValue];
            if(status == 0) {
                JYLOG(@"--- 操作成功 --- :%@", responseObject);
                success(responseObject[kResponseData]);
            } else {
                JYLOG(@"--- 操作失敗 --- :%@", responseObject);
                failure(state[kResponseMessage]);
            }
        }
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        failure(@"網(wǎng)絡(luò)連接錯誤");
        JYLOG(@"%@", error);
    }];
}

+ (void)networkRequestPOST:(NSString *)url
                                    parameters:(NSDictionary *)parameters
                                       success:(void(^)(id object))success
                                       failure:(void(^)(id error))failure
{
    
    NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"https" ofType:@"cer"];
    NSData * certData =[NSData dataWithContentsOfFile:cerPath];
    NSSet * certSet = [[NSSet alloc] initWithObjects:certData, nil];
    AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeCertificate];
    
    [securityPolicy setAllowInvalidCertificates:YES];
    
    [securityPolicy setPinnedCertificates:certSet];
    
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    manager.requestSerializer = [AFJSONRequestSerializer serializer];
    manager.responseSerializer = [AFJSONResponseSerializer serializer];
    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json",@"text/json", @"text/plain", @"text/html", nil];
    
    NSLog(@"請求URL:%@\n請求參數(shù):%@", url, parameters);
    [manager POST:url parameters:parameters progress:^(NSProgress * _Nonnull uploadProgress) {
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        if ([responseObject isKindOfClass:[NSDictionary class]]) {
            responseObject = WWJSONObjectResetNullValue(responseObject, NSJSONReadingAllowFragments);
            
            NSDictionary *state = responseObject[kResponseState];
            NSInteger status = [state[kResponseStatus]integerValue];
            if(status == 0) {
                NSLog(@"--- 操作成功 --- :%@", responseObject);
                success(responseObject[kResponseData]);
            } else {
                NSLog(@"--- 操作失敗 --- :%@", responseObject);
                failure(state[kResponseMessage]);
            }
        }
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        failure(@"網(wǎng)絡(luò)連接錯誤");
        JYLOG(@"%@", error);
    }];
}


#pragma mark - Private

static id WWJSONObjectResetNullValue(id JSONObject, NSJSONReadingOptions readingOptions) {
    if ([JSONObject isKindOfClass:[NSArray class]]) {
        NSMutableArray *mutableArray = [NSMutableArray arrayWithCapacity:[(NSArray *)JSONObject count]];
        for (id value in (NSArray *)JSONObject) {
            [mutableArray addObject:WWJSONObjectResetNullValue(value, readingOptions)];
        }

        return (readingOptions & NSJSONReadingMutableContainers) ? mutableArray : [NSArray arrayWithArray:mutableArray];
    } else if ([JSONObject isKindOfClass:[NSDictionary class]]) {
        NSMutableDictionary *mutableDictionary = [NSMutableDictionary dictionaryWithDictionary:JSONObject];
        for (id <NSCopying> key in [(NSDictionary *)JSONObject allKeys]) {
            id value = (NSDictionary *)JSONObject[key];
            if (!value || [value isEqual:[NSNull null]]) {
                [mutableDictionary setObject:@"" forKey:key];
            } else if ([value isKindOfClass:[NSArray class]] || [value isKindOfClass:[NSDictionary class]]) {
                mutableDictionary[key] = WWJSONObjectResetNullValue(value, readingOptions);
            }
        }

        return (readingOptions & NSJSONReadingMutableContainers) ? mutableDictionary : [NSDictionary dictionaryWithDictionary:mutableDictionary];
    }

    return JSONObject;
}

只要使用以上方法就可以對你的接口進行包裝請求數(shù)據(jù)了.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末蛇损,一起剝皮案震驚了整個濱河市闷尿,隨后出現(xiàn)的幾起案子损痰,更是在濱河造成了極大的恐慌,老刑警劉巖螟左,帶你破解...
    沈念sama閱讀 211,042評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異觅够,居然都是意外死亡胶背,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評論 2 384
  • 文/潘曉璐 我一進店門喘先,熙熙樓的掌柜王于貴愁眉苦臉地迎上來钳吟,“玉大人,你說我怎么就攤上這事窘拯『烨遥” “怎么了坝茎?”我有些...
    開封第一講書人閱讀 156,674評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長暇番。 經(jīng)常有香客問我嗤放,道長,這世上最難降的妖魔是什么壁酬? 我笑而不...
    開封第一講書人閱讀 56,340評論 1 283
  • 正文 為了忘掉前任次酌,我火速辦了婚禮,結(jié)果婚禮上舆乔,老公的妹妹穿的比我還像新娘岳服。我一直安慰自己,他們只是感情好希俩,可當我...
    茶點故事閱讀 65,404評論 5 384
  • 文/花漫 我一把揭開白布吊宋。 她就那樣靜靜地躺著,像睡著了一般斜纪。 火紅的嫁衣襯著肌膚如雪贫母。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,749評論 1 289
  • 那天盒刚,我揣著相機與錄音腺劣,去河邊找鬼。 笑死因块,一個胖子當著我的面吹牛橘原,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播涡上,決...
    沈念sama閱讀 38,902評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼趾断,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了吩愧?” 一聲冷哼從身側(cè)響起芋酌,我...
    開封第一講書人閱讀 37,662評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎雁佳,沒想到半個月后脐帝,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,110評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡糖权,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年堵腹,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片星澳。...
    茶點故事閱讀 38,577評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡疚顷,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情腿堤,我是刑警寧澤阀坏,帶...
    沈念sama閱讀 34,258評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站释液,受9級特大地震影響全释,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜误债,卻給世界環(huán)境...
    茶點故事閱讀 39,848評論 3 312
  • 文/蒙蒙 一浸船、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧寝蹈,春花似錦李命、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,726評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至耍鬓,卻和暖如春阔籽,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背牲蜀。 一陣腳步聲響...
    開封第一講書人閱讀 31,952評論 1 264
  • 我被黑心中介騙來泰國打工笆制, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人涣达。 一個月前我還...
    沈念sama閱讀 46,271評論 2 360
  • 正文 我出身青樓在辆,卻偏偏與公主長得像,于是被迫代替她去往敵國和親度苔。 傳聞我的和親對象是個殘疾皇子匆篓,可洞房花燭夜當晚...
    茶點故事閱讀 43,452評論 2 348

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,734評論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件寇窑、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,058評論 4 62
  • 人生的開始源于模仿甩骏,你看那些小娃娃滴溜滴溜轉(zhuǎn)的眼睛完残,然后不久之后就可以看到他們學會了新的技能。但是光是模仿當然無法...
    梅子的江湖閱讀 506評論 1 3
  • 1. 偶然間熟掂,面對平地而起的高樓大廈缎浇,穿行街邊的忙碌人群,將真的我是崩潰的赴肚。似乎忘記應該采取一種什么樣的方式態(tài)度去...
    宸柒歲閱讀 536評論 0 6
  • 我的19歲,20歲指厌,21歲刊愚,22歲 我的直發(fā),卷發(fā)踩验,直發(fā)鸥诽,卷發(fā),直發(fā) 你電摩的后座箕憾,舊大眾的副駕駛 我熬夜寫筆記 ...
    小汐行空閱讀 333評論 3 6