(網絡)AFNetworking基本使用

1、使用AFNetwoking

//導入
#import "AFNetworking.h"
#import "UIKit+AFNetworking.h"
//和導入系統框架  MobileCoreServices、SystemConfiguration、sec 。。忽略

網絡監聽

AFNetworkReachabilityManager  網絡監聽管理者對象

方法:
設置監聽
  setReachabilityStatusChangeBlock 
啟動監聽
  startMonitoring 
代碼:
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ 
//創建網絡監聽管理者對象 AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager]; 
/* typedef NS_ENUM(NSInteger, AFNetworkReachabilityStatus) { 
  AFNetworkReachabilityStatusUnknown = -1,//未識別的網絡 
  AFNetworkReachabilityStatusNotReachable = 0,//不可達的網絡(未連接) 
  AFNetworkReachabilityStatusReachableViaWWAN = 1,//2G,3G,4G... 
  AFNetworkReachabilityStatusReachableViaWiFi = 2,//wifi網絡 }; */ 
//設置監聽 
 [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { 
  switch (status) { 
    case AFNetworkReachabilityStatusUnknown: 
      NSLog(@"未識別的網絡"); 
      break; 
    case AFNetworkReachabilityStatusNotReachable:
      NSLog(@"不可達的網絡(未連接)"); 
      break; 
    case AFNetworkReachabilityStatusReachableViaWWAN: 
      NSLog(@"2G,3G,4G...的網絡"); 
      break; 
    case AFNetworkReachabilityStatusReachableViaWiFi: 
      NSLog(@"wifi的網絡"); 
      break; 
    default: 
      break; 
    } 
  }]; 
//開始監聽 
[manager startMonitoring];}

下載

//
NSURLSessionConfiguration
> + defaultSessionConfiguration 
:創建一個默認的NSURLSessionConfiguration

AFURLSessionManager
> - initWithSessionConfiguration 
:初始化AFURLSessionManager 通過 NSURLSessionConfiguration

> - downloadTaskWithRequest
:創建 NSURLSessionDownloadTask 對象

NSURLSessionDownloadTask
> - resume 

代碼:
    NSURLSessionConfiguration *sessionConfig = [NSURLSessionConfiguration defaultSessionConfiguration];
    //繼承自AFURLSessionManager。類似于1和2的關系。也是方便HTTP以及https請求的使用,增加了一些接口,方便調用。
    AFURLSessionManager *sessionManager = [[AFURLSessionManager alloc] initWithSessionConfiguration:sessionConfig];
    
    NSURL *url = [NSURL URLWithString:@"http://www.361810.com/uploads/allimg/150409/2053363O4-0.jpg"];
    
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    //progress 進度條 destination 最終地址  completionHandler 完成處理程序
    NSURLSessionDownloadTask *downloadTask = [sessionManager downloadTaskWithRequest:request progress:nil destination:^NSURL * _Nonnull(NSURL * _Nonnull targetPath, NSURLResponse * _Nonnull response) {
        
        
        
        NSLog(@"%@",[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) firstObject]);
        
        //創建下載地址
        NSURL *downloadURL = [[NSFileManager defaultManager] URLForDirectory:NSDocumentDirectory inDomain:NSUserDomainMask appropriateForURL:nil create:NO error:nil];
        return [downloadURL URLByAppendingPathComponent:[response suggestedFilename]];
        
    } completionHandler:^(NSURLResponse * _Nonnull response, NSURL * _Nullable filePath, NSError * _Nullable error) {
        
        //這時候已經在主線程了
        
        //先將filePath轉換成data類型
        NSData *data = [NSData dataWithContentsOfURL:filePath];
        //轉換成image
        UIImage *image = [UIImage imageWithData:data];
        _imageView.image = image;
    }];
    
    //繼續操作
    [downloadTask resume];

上傳

get post 解析

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,377評論 25 708
  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,949評論 18 139
  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,245評論 4 61
  • 要想系統化的了解一個公司,首先你要是在職人士,其次要處處用心?;旧狭私庖粋€公司和了解人有很多共通性,我們要通過結...
    姬苜的學習樂園閱讀 497評論 0 0
  • 明月老師的分享 首先明月老師的成長歷程: 六盞明燈,頸椎病不治而愈,報恩幫助師父每次有時間做義工。泰山年會上被師父...
    一彎港灣閱讀 248評論 0 0