国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

iOS網絡-05-AFNetwoking原理及常用操作

2019-11-14 18:28:34
字體:
來源:轉載
供稿:網友

AFN的六大模塊


  • NSURLConnection,主要對NSURLConnection進行了進一步的封裝,包含以下核心的類:

    • AFURLConnectionOperation
    • AFHTTPRequestOperationManager
    • AFHTTPRequestOperation
  • NSURLsession,主要對象NSURLSession對象進行了進一步的封裝,包含以下核心的類:

    • AFURLSessionManager
    • AFHTTPSessionManager
  • Reachability,提供了與網絡狀態相關的操作接口,包含以下核心的類:

    • AFNetworkReachabilityManager
  • Security,提供了與安全性相關的操作接口,包含以下核心的類:

    • AFSecurityPolicy
  • Serialization,提供了與解析數據相關的操作接口,包含以下核心的類:

    • AFURLRequestSerialization
    • AFURLResponseSerialization
  • UIKit,提供了大量網絡請求過程中與UI界面顯示相關的操作接口,通常用于網絡請求過程中提示,使用戶交互更加友好,包含以下核心的分類/類:

    • AFNetworkActivityIndicatorManager
    • UIActivityIndicatorView+AFNetworking
    • UIAlertView+AFNetworking
    • UIButton+AFNetworking
    • UIImageView+AFNetworking
    • UIKit+AFNetworking
    • UiprogressView+AFNetworking
    • UIRefreshControl+AFNetworking
    • UIWebView+AFNetworking

AFURLSessionManager


  • 創建任務的方法

    • 普通任務

      - (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request completionHandler:(void (^)(NSURLResponse *response, id responSEObject, NSError *error))completionHandler/*** request:請求對象* completionHandler:請求完成調用的Block 	* response:服務器的響應信息	* responseObject:服務器返回的數據	* error:錯誤信息*/
    • 上傳任務(分別上傳不同類型的文件)

      // 1. 上傳文件類型的數據- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request fromFile:(NSURL *)fileURL progress:(NSProgress * __autoreleasing *)progress completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler/*** fileURL:所要上傳文件的路徑*/// 2. 上傳NSData類型的數據- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request fromData:(NSData *)bodyData progress:(NSProgress * __autoreleasing *)progress completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler/*** bodyData:所要上傳的文件數據*/// 3. 上傳流數據- (NSURLSessionUploadTask *)uploadTaskWithStreamedRequest:(NSURLRequest *)request progress:(NSProgress * __autoreleasing *)progress completionHandler:(void (^)(NSURLResponse *response, id responseObject, NSError *error))completionHandler/*** request:通過流數據初始化的請求對象*/
    • 下載任務

      // 1. 普通下載任務- (NSURLSessionDownloadTask *)downloadTaskWithRequest:(NSURLRequest *)request progress:(NSProgress * __autoreleasing *)progress destination:(NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination completionHandler:(void (^)(NSURLResponse *response, NSURL *filePath, NSError *error))completionHandler/*** progress:管理下載進度* destination:保存數據調用的Block	* targetPath:數據的保存路徑	* 服務器的響應信息*/// 2. 支持斷點下載的下載任務- (NSURLSessionDownloadTask *)downloadTaskWithResumeData:(NSData *)resumeData progress:(NSProgress * __autoreleasing *)progress destination:(NSURL * (^)(NSURL *targetPath, NSURLResponse *response))destination completionHandler:(void (^)(NSURLResponse *response, NSURL *filePath, NSError *error))completionHandler /*** progress:管理下載進度* resumeData:斷點下載時的斷點信息*/                                   

AFHTTPSessionManager


  • 常用的屬性

    • baseURL(NSURL *),用于監視網絡可達性與創建請求對象
    • requestSerializer(AFHTTPRequestSerializer *),指定指定GET、HEAD與DELETE請求參數的解析格式
    • responseSerializer(AFHTTPResponseSerializer *),用于指定服務器返回數據的格式
  • 常用方法

    • 初始化

      // 1. 通過工廠方法創建AFHTTPSessionManager對象+ (instancetype)manager// 2. 通過構造方法創建AFHTTPSessionManager對象- (instancetype)initWithBaseURL:(NSURL *)url/*** 根據url初始化AFHTTPSessionManager對象*/- (instancetype)initWithBaseURL:(NSURL *)url sessionConfiguration:(NSURLSessionConfiguration *)configuration/*** 根據url與configuration初始化AFHTTPSessionManager對象*/
    • 請求數據

      // 1. GET請求- (NSURLSessionDataTask *)GET:(NSString *)URLString parameters:(id)parameters success:(void (^)(NSURLSessionDataTask *task, id responseObject))success failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure/*** URLString:請求路徑* parameters:請求參數* success:請求成功時調用的Block	* responseObject:服務器返回的數據* failure:請求失敗時調用的Block	* error:錯誤信息*/// 2. POST請求- (NSURLSessionDataTask *)POST:(NSString *)URLString parameters:(id)parameters success:(void (^)(NSURLSessionDataTask *task, id responseObject))success failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure/*** 參數含義與GET請求相同*/- (NSURLSessionDataTask *)POST:(NSString *)URLString parameters:(id)parameters constructingBodyWithBlock:(void (^)(id <AFMultipartFormData> formData))block success:(void (^)(NSURLSessionDataTask *task, id responseObject))success failure:(void (^)(NSURLSessionDataTask *task, NSError *error))failure/*** block:用于創建多個數據來源*/

使用AFN請求網絡數據


  • 請求數據(xml/JSON)

    • 創建AFHTTPSessionManager對象

      AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    • 指定對服務器的返回數據格式

      //以XML文檔的形式返回數據manager.responseSerializer = [AFXMLParserResponseSerializer serializer];//以JSON形式返回數據manager.responseSerializer = [AFJSONResponseSerializer serializer];
    • 設置請求體(類型為XML或JSON)

      // 請求體通常由服務器指定格式	NSDictionary *params = @{                         @"username" : @"賬號",                         @"pwd" : @"密碼",                         @"type" : @"XML/JSON"                         };                             
    • 發送請求

      [manager GET:@"請求路徑" parameters:params success:^(NSURLSessionDataTask *task, id responseObject) {	//responseObject:服務器返回的數據    NSLog(@"請求成功");} failure:^(NSURLSessionDataTask *task, NSError *error) {	//error:錯誤信息    NSLog(@"請求失敗");}];
  • 上傳數據

    • 創建AFHTTPSessionManager對象

      AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    • 創建上傳任務

      /**基于NSURLConnection*/[manager POST:@"請求路徑" parameters:@{@"用戶名" : @"密碼" constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 	//設置需要上傳的文件    NSData *data = [NSData dataWithContentsOfFile:@"所要長傳文件的路徑"];    [formData appendPartWithFileData:data name:@"file" fileName:@"test.png" mimeType:@"image/png"];} success:^(NSURLSessionDataTask *task, id responseObject) {          //上傳成功} failure:^(NSURLSessionDataTask *task, NSError *error) {    //上傳失敗}];/**基于NSURLSession*/[manager uploadTaskWithRequest:request fromData:data progress:progress completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) {    //上傳數據成功}];
  • 下載數據

    • 創建AFHTTPSessionManager對象

      AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    • 創建下載任務

      /**基于NSURLSession*/[manager downloadTaskWithRequest:request progress:progress destination:^NSURL *(NSURL *targetPath, NSURLResponse *response) {    // 存儲下載數據是調用的Block} completionHandler:^(NSURLResponse *response, NSURL *filePath, NSError *error) {    //下載完成時調用的Block}]

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 霍林郭勒市| 大渡口区| 塔河县| 安化县| 大邑县| 宁乡县| 玉门市| 安化县| 雅安市| 贵阳市| 马鞍山市| 荣成市| 深圳市| 固原市| 密云县| 高台县| 西贡区| 嘉兴市| 会泽县| 平江县| 陆良县| 舒城县| 靖边县| 从江县| 嘉峪关市| 琼结县| 工布江达县| 邻水| 康乐县| 平原县| 衡南县| 临夏县| 绵竹市| 湖北省| 东兴市| 纳雍县| 泰兴市| 清河县| 景宁| 惠水县| 普定县|