AFNetworking的安裝問題以及使用

今天要用AFNetworking這個框架,發現終端像是抽風似的,不管是install還是update都沒有反應,初始以為是網速的問題,后來發現網絡監控中有網速,就很納悶,等了幾分鐘,直接給我報了個錯誤:
本來樓主想把錯誤信息截圖上來的,但是后來發現我介君這個問題后本地已經有了這個庫,所以就測試不出來問題了.無奈我就把解決的方法拿出來分享一下:
順便介紹一下如何在自己的項目中集成第三方框架:


git.gif

樓主的之所以能夠下載成功,是因為之前下載過了!

如果大家在安裝(pod install/update)沒反應,就把pod install替換成:
pod install --verbose --no-repo-update

之后就可以下載成功了,CocoaPods有太多的問題,如果有朋友出現類似的問題可以試試,說不定管用.

關于AFNetworking的使用

1、使用AFNetworking來上傳文件

    //創建 此處并不是單例
    AFHTTPSessionManager*manager = [AFHTTPSessionManager manager];
    [manager POST:@"http://127.0.0.1/php/upload/upload.php" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {
        
        //在這里上傳文件
        #從本地讀取圖片
        NSURL*url = [[NSBundle mainBundle] URLForResource:@"1.jpg" withExtension:nil];
        [formData appendPartWithFileURL:url name:@"userfile" error:NULL];
        
    } progress:^(NSProgress * _Nonnull uploadProgress) {
       #進程block的回調
    } success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
       #成功后block的回調
      NSLog(@"%@",responseObject);
      NSLog(@"上傳成功");
        
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        #失敗后block的回調
        NSLog(@"上傳失敗");
    }];

測試:

git.gif

2、使用AFNetworking來獲取數據(json)

此處是那本地服務器中的數據來測試的(需要搭建本地服務器)

//創建 此處并不是單例
    AFHTTPSessionManager*manager = [AFHTTPSessionManager manager];
    [manager GET:@"http://127.0.0.1/demo.json" parameters:nil
 progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
     
     NSLog(@"獲取成功");
     
     //AFN為我們已經做了json的反序列化的處理
     NSLog(@"%@",[responseObject class]);
     
 } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
     
     NSLog(@"獲取失敗");
 }];
測試:
![git.gif](http://upload-images.jianshu.io/upload_images/3324576-73872d3e84382f5b.gif?imageMogr2/auto-orient/strip)

3、使用AFNetworking來獲取HTML

AFHTTPSessionManager*manager = [AFHTTPSessionManager manager];
    
     #必須要寫這句話才能獲取
    #//由于訪問的數據是HTML 不是JSON 所以需要手動的指定響應序列化器 默認是json的響應序列化器

    manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    
    [manager GET:@"http://www.baidu.com/" parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        
//        NSString*sting = [[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding];
//        
        NSLog(@"%@",[responseObject class]);  //NSXMLParser

        
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        
    }];

測試:


gif.gif

4、使用AFNetworking來下載

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    
    // 2.downlaodTask
    /*
     1.請求
     2.進度
     3.destination 把文件下載到哪里去
     4.completionHandler 完成后的回調
     */
    #要下載的文件,樓主是從百度獲取的圖片地址
    NSURL*url = [NSURL URLWithString:@"http://g.hiphotos.baidu.com/image/pic/item/d000baa1cd11728b99625f26cafcc3cec3fd2c63.jpg"];
    
    NSURLRequest*request = [NSURLRequest requestWithURL:url];
    
    NSURLSessionDownloadTask*downTask = [manager downloadTaskWithRequest:request progress:^(NSProgress * _Nonnull downloadProgress) {
        
        NSLog(@"%f",downloadProgress.fractionCompleted);
        
    } destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {
        
        //返回文件保存到哪里 url
           #保存到cache目錄
//        NSString*cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES)lastObject];
        
              #保存到桌面
        NSString*desktop = @"/Users/yms/Desktop";
        
        //文件名
        NSString*fileName = response.suggestedFilename;
        
        NSString*savePath = [desktop stringByAppendingPathComponent:fileName];
        
         //由于生成的string沒有協議 所以不是一個完整的url 不能使用 URLWithString
        NSURL*localURL = [[NSURL alloc]initFileURLWithPath:savePath];
        
        return localURL;
        
        
        return nil;
        
    } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {
        
        NSLog(@"%@",filePath);
        
    }];
    [downTask resume];

測試:

gif.gif

5、使用AFNetworking來獲取HTTPS的數據(拿12306做的測試)

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    
    //https的默認設置
    AFSecurityPolicy *policy = [AFSecurityPolicy defaultPolicy];

    //12306自己建的證書
    policy.allowInvalidCertificates = YES;
    
    #//校驗域名   不去校驗域名
    policy.validatesDomainName = NO;

    [manager setSecurityPolicy:policy];

    //html
    manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    
    [manager GET:@"https://kyfw.12306.cn/otn/" parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        
        NSLog(@"%@",responseObject);
        
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

    }];

測試:


gif.gif

6、使用AFNetworking來檢測網絡狀態變化

 AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
    //當網絡狀態發生改變的時候,會通過block回調告訴我
    [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
        
        //        AFNetworkReachabilityStatusUnknown          = -1, 未知
        //        AFNetworkReachabilityStatusNotReachable     = 0,無網絡
        //        AFNetworkReachabilityStatusReachableViaWWAN = 1,蜂窩數據
        //        AFNetworkReachabilityStatusReachableViaWiFi = 2,wifi
        switch (status) {
            case AFNetworkReachabilityStatusReachableViaWiFi:
                NSLog(@"wifi");
                break;
            case AFNetworkReachabilityStatusUnknown:
                NSLog(@"Unknown");
                break;
            default:
                break;
        }
    }];
    //開啟監控
    [manager startMonitoring];

這個樓主就不測試了,大家有興趣可以去試一下~

樓主對這個框架的使用還不是很熟練,有很多地方并不是很懂,希望有大神帶帶我

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,460評論 6 538
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,067評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,467評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,468評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,184評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,582評論 1 325
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,616評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,794評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,343評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,096評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,291評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,863評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,513評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,941評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,190評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,026評論 3 396
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,253評論 2 375

推薦閱讀更多精彩內容