AFNetWorking

AFNetworking的基本使用

網(wǎng)絡(luò)請(qǐng)求

  • AFNetworking的基本用法和NSURLSession的用法基本是相同的
  • AFNetworking的基本使用類
  • AFHTTPSessionManager的功能
方法 功能
-(NSURLSessionDataTask *)GET:(NSString *)URLString parameters:(id)parameters progress:(void (^)(NSProgress * _Nonnull))downloadProgress success:(void (^)(NSURLSessionDataTask * _Nonnull, id _Nullable))success failure:(void (^)(NSURLSessionDataTask * _Nullable, NSError * _Nonnull))failure get請(qǐng)求
- (NSURLSessionDataTask *)POST:(NSString *)URLString parameters:(id)parameters constructingBodyWithBlock:(void (^)(id <AFMultipartFormData> formData))block progress:(nullable void (^)(NSProgress * _Nonnull))uploadProgress success:(void (^)(NSURLSessionDataTask *task, id responseObject))success failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure post請(qǐng)求
- (NSURLSessionDownloadTask *)downloadTaskWithRequest:(NSURLRequest *)request progress:(void (^)(NSProgress *downloadProgress)) downloadProgressBlock destination:(NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination completionHandler:(void (^)(NSURLResponse *response, NSURL *filePath, NSError *error))completionHandler 下載大文件
- (void)setReachabilityStatusChangeBlock:(void (^)(AFNetworkReachabilityStatus status))block 監(jiān)聽網(wǎng)絡(luò)狀態(tài)
  • 注意:如果要想刷新頁(yè)面這些需要在主線程進(jìn)行操作的任務(wù),其實(shí)就在block中進(jìn)行就可以,因?yàn)锳FNetworking已經(jīng)幫你回到了主線程

get請(qǐng)求

   AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager];
    //添加返回的值的類型
     mgr.responseSerializer = [AFHTTPResponseSerializer serializer];
    [mgr GET:@"http://b.hiphotos.baidu.com/image/w%3D2048/sign=6be5fc5f718da9774e2f812b8469f919/8b13632762d0f703b0faaab00afa513d2697c515.jpg" parameters:nil progress:^(NSProgress * _Nonnull downloadProgress) {
    //如果要顯示進(jìn)度,就要來到這里,由于請(qǐng)求下來的數(shù)據(jù)是data,用代理方法是一段一段下來的,所以只要下來一段,就會(huì)執(zhí)行這個(gè)block,所有用當(dāng)前進(jìn)度除以總進(jìn)度就會(huì)展現(xiàn)出下載的進(jìn)度條
         [self.slider setValue:1.0 * downloadProgress.completedUnitCount / downloadProgress.totalUnitCount animated:YES];
        NSLog(@"進(jìn)度 = %f",1.0 * downloadProgress.completedUnitCount / downloadProgress.totalUnitCount);
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
    //成功就會(huì)走這里,responseObject是字典或者數(shù)組
        NSLog(@"%@",responseObject);
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
    //失敗就會(huì)走到這里
        NSLog(@"err = %@",error);
    }];

post請(qǐng)求

    AFHTTPSessionManager *mgr =[AFHTTPSessionManager manager];
    //這里可以添加評(píng)論,把評(píng)論放到這里,放入parameters字典中返回給服務(wù)器,請(qǐng)求成功后刷新cell就會(huì)展現(xiàn)評(píng)論
    NSString *content = @"你別吃了,再吃就胖死了";
    NSString *str =[content stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
    [mgr POST:@"http://api2.pianke.me/comment/add" parameters:@{@"auth":@"XZU7RH7m1861DC8Z8H8HvkTJxQMGoPLGO9zo4XDA0cWP22NdFSh9d7fo",@"client":@1,@"content":str,@"contentid":@"553a073adfa688b70300001c",@"deviceid":@"6D4DD967-5EB2-40E2-A202-37E64F3BEA31",@"recid":@"",@"reuid":@"",@"version":@"3.0.6"}
constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {
        //上傳數(shù)據(jù)(這里只做上傳數(shù)據(jù))
    } progress:^(NSProgress * _Nonnull uploadProgress) {
        //進(jìn)度條
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        //成功,responseObject就是返回的數(shù)據(jù)
        NSLog(@"%@",responseObject);
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        //失敗
        NSLog(@"%@",error);
    }];

下載大文件

   AFHTTPSessionManager *mgr =[AFHTTPSessionManager manager];
    //設(shè)置請(qǐng)求
    NSURLRequest *req = [NSURLRequest requestWithURL:[NSURL URLWithString: @"網(wǎng)絡(luò)請(qǐng)求" ]];
    [mgr downloadTaskWithRequest:req progress:^(NSProgress * _Nonnull downloadProgress) {
        //這里是進(jìn)度條
    } destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {
        //這里第一個(gè)參數(shù)你要給一個(gè)文件下載的路徑
    } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {
        //這里是下載完成給你的響應(yīng),文件路徑,錯(cuò)誤,
    }];

文件上傳

    [mgr POST:@"http://api2.pianke.me/comment/add" parameters:nil
constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {
        //設(shè)置上傳的文件
    NSData *data = [NSData dataWithContentsOfFile:@"用戶上傳的本地文件的地址"];
    //這里設(shè)置上傳文件的請(qǐng)求頭,請(qǐng)求體的設(shè)置AFMultipartFormData幫你拼接好了,只要調(diào)下面的方法就可以了
    [formData appendPartWithFileData:data name:<#(nonnull NSString *)#> fileName:<#(nonnull NSString *)#> mimeType:<#(nonnull NSString *)#>];
    } progress:^(NSProgress * _Nonnull uploadProgress) {
        //進(jìn)度條
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        //上傳成功,返回響應(yīng)
        NSLog(@"%@",responseObject);
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        //失敗
        NSLog(@"%@",error);
    }];

監(jiān)聽網(wǎng)絡(luò)狀態(tài)

  • 一般在AppDelegate里面監(jiān)聽的是整個(gè)app的狀態(tài),在控制器監(jiān)聽的是當(dāng)前的頁(yè)面,
  • 如果監(jiān)聽的話可以寫個(gè)bool型的方法去監(jiān)聽,返回是否有網(wǎng)絡(luò)
//這里去監(jiān)聽是否有網(wǎng)
+ (BOOL)isNet
{
    return [AFNetworkReachabilityManager manager].reachableViaWiFi ||[AFNetworkReachabilityManager manager].reachableViaWWAN;
}
    //檢測(cè)網(wǎng)絡(luò)
    AFNetworkReachabilityManager *magr = [ AFNetworkReachabilityManager sharedManager];
    [magr setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
        switch (status) {
            case AFNetworkReachabilityStatusUnknown:
                NSLog(@"不清楚");
                break;
            case AFNetworkReachabilityStatusNotReachable:
                NSLog(@"連接不上");
                break;
            case AFNetworkReachabilityStatusReachableViaWiFi:
                NSLog(@"WiFi");
                break;
            case AFNetworkReachabilityStatusReachableViaWWAN:
                NSLog(@"蜂窩網(wǎng)");
                break;
        }
    }];
    //開啟檢測(cè)
    [magr startMonitoring];
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末牲距,一起剝皮案震驚了整個(gè)濱河市昔善,隨后出現(xiàn)的幾起案子让蕾,更是在濱河造成了極大的恐慌击儡,老刑警劉巖蝙砌,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異月培,居然都是意外死亡谷暮,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門劣欢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來棕诵,“玉大人,你說我怎么就攤上這事凿将⌒L祝” “怎么了?”我有些...
    開封第一講書人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵牧抵,是天一觀的道長(zhǎng)笛匙。 經(jīng)常有香客問我,道長(zhǎng)灭忠,這世上最難降的妖魔是什么膳算? 我笑而不...
    開封第一講書人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮弛作,結(jié)果婚禮上涕蜂,老公的妹妹穿的比我還像新娘。我一直安慰自己映琳,他們只是感情好机隙,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開白布蜘拉。 她就那樣靜靜地躺著,像睡著了一般有鹿。 火紅的嫁衣襯著肌膚如雪旭旭。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評(píng)論 1 285
  • 那天葱跋,我揣著相機(jī)與錄音持寄,去河邊找鬼。 笑死娱俺,一個(gè)胖子當(dāng)著我的面吹牛稍味,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播荠卷,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼模庐,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了油宜?” 一聲冷哼從身側(cè)響起掂碱,我...
    開封第一講書人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎慎冤,沒想到半個(gè)月后疼燥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡粪薛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年悴了,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片违寿。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡湃交,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出藤巢,到底是詐尸還是另有隱情搞莺,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布掂咒,位于F島的核電站才沧,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏绍刮。R本人自食惡果不足惜温圆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望孩革。 院中可真熱鬧岁歉,春花似錦、人聲如沸膝蜈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至非剃,卻和暖如春置逻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背备绽。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來泰國(guó)打工券坞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人疯坤。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓报慕,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親压怠。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

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