1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      iOS網(wǎng)絡(luò)開發(fā)(7)大牛們的杰作AFNetworking-創(chuàng)新互聯(lián)

      本篇文章介紹傳說中的  AFN 框架的使用

      創(chuàng)新互聯(lián)公司專注于網(wǎng)站建設(shè)|成都網(wǎng)站改版|優(yōu)化|托管以及網(wǎng)絡(luò)推廣,積累了大量的網(wǎng)站設(shè)計與制作經(jīng)驗,為許多企業(yè)提供了網(wǎng)站定制設(shè)計服務(wù),案例作品覆蓋戶外休閑椅等行業(yè)。能根據(jù)企業(yè)所處的行業(yè)與銷售的產(chǎn)品,結(jié)合品牌形象的塑造,量身開發(fā)品質(zhì)網(wǎng)站。

      AFNetworking是iOS開發(fā)中最廣泛使用的開源項目之一,是最活躍最有影響力的開源項目之一。

          源自一個LBS項目,成功代替了ASIHTTPRequest成為了主流的網(wǎng)絡(luò)解決方案。

      AFN將NSURLConnection與NSOperation結(jié)合(內(nèi)部使用GCD),并在2.0版本開始兼容NSURLSession

      使用AFN發(fā)送請求可以使用兩種方式:

          AFHTTPRequestOperationManager和AFURessionManager

          如果是數(shù)據(jù)任務(wù)推薦使用第一種,如果是下載/上傳任務(wù)推薦使用第二種

      • 使用AFHTTPRequestOperationManager

      這個類的對象,能夠非常方便的創(chuàng)建并發(fā)起各種HTTP請求

      對象的創(chuàng)建:

       + (instancetype)manager

      1)發(fā)起GET請求:

      - (nullable AFHTTPRequestOperation *)GET:(NSString *)URLString parameters:(nullable id)parameters success:(nullable void ( ^ ) ( AFHTTPRequestOperation *operation , id responseObject ))success failure:(nullable void ( ^ ) ( AFHTTPRequestOperation *operation , NSError *error ))failure

         參數(shù)URLString:請求的url

         參數(shù)parameters:參數(shù)字典,GET請求的參數(shù)可以放在URL中也可以放在這里

                   使用@{key1:value1, key2:value2, ...} 代理 key1=value1&key2=value2&...

         參數(shù)success:請求成功時,執(zhí)行的block

         參數(shù)failure:請求失敗時,執(zhí)行的block

         返回值:AFHTTPRequestOperation請求任務(wù)對象

          如:

          iOS網(wǎng)絡(luò)開發(fā)(7)大牛們的杰作AFNetworking

          或?qū)?shù)放在parameters參數(shù)上

          iOS網(wǎng)絡(luò)開發(fā)(7)大牛們的杰作AFNetworking

      2)發(fā)起POST請求

      - (nullable AFHTTPRequestOperation *)POST:(NSString *)URLString parameters:(nullable id)parameters success:(nullable void ( ^ ) ( AFHTTPRequestOperation *operation , id responseObject ))success failure:(nullable void ( ^ ) ( AFHTTPRequestOperation *operation , NSError *error ))failure

        如:

          iOS網(wǎng)絡(luò)開發(fā)(7)大牛們的杰作AFNetworking

      • 請求對象的序列化工具

      功能一:完成請求對象的功能

          使用AFHTTPRequestOperationManager發(fā)送請求參數(shù)是NSURL而不是NSURLRequest;之前介紹過,NSURLRequest中并不僅僅是NSURL,還可以:設(shè)置請求頭參數(shù)、設(shè)置緩存策略、設(shè)置請求超時等

          這些功能由請求對象的序列化工具對象完成

      功能二:請求的參數(shù)自動序列化

          除了完成這些本屬于NSURLRequest的任務(wù)外,還能實現(xiàn)將請求的參數(shù)(URL參數(shù)及請求體參數(shù))進行序列化,由于很少服務(wù)器上請求要求傳遞JSON/XML數(shù)據(jù),所以這個功能很少使用

      父類:AFHTTPRequestSerializer

      子類:AFJSONRequestSerializer(默認(rèn)) AFPropertyListRequestSerializer  ...

      1)設(shè)置請求頭的參數(shù)

      - (void)setValue:(nullable NSString *)valueforHTTPHeaderField:(NSString *)field
      - (nullable NSString *)valueForHTTPHeaderField:(NSString *)field
      @property (readonly, nonatomic, strong) NSDictionary *HTTPRequestHeaders

      如:發(fā)送GET請求獲得用戶信息,要求傳入header參數(shù)  Authorization=tokenID xxxxxx

          iOS網(wǎng)絡(luò)開發(fā)(7)大牛們的杰作AFNetworking

      2)設(shè)置緩存策略

      @property (nonatomic, assign) NSURLRequestCachePolicy cachePolicy

      3)通過序列化工具,可以設(shè)置請求超時

      @property (nonatomic, assign) NSTimeInterval timeoutInterval

      • 響應(yīng)對象的反序列化工具

      功能一:將響應(yīng)數(shù)據(jù)反序列化

          也就是說,如果接受到一個JSON數(shù)據(jù),它能幫助我們直接反序列化為OC基本數(shù)據(jù)對象

      功能二:通過一些屬性的設(shè)定,可以限制接收哪些想要的響應(yīng)數(shù)據(jù)

      父類:AFHTTPResponseSerializer

      子類:AFJSONResponseSerializer AFPropertyListResponseSerializer AFImageResponseSerializer

               AFXMLParserResponseSerializer AFXMLDocumentResponseSerializer

      默認(rèn)是AFJSONResponseSerializer,因為大多數(shù)的請求都是JSON類型

      1)設(shè)置能夠正確接收的響應(yīng)數(shù)據(jù)類型(MIMETYPE):

      @property (nonatomic, copy, nullable) NSSet *acceptableContentTypes

      2)設(shè)置能夠正確接收的狀態(tài)碼:

      @property (nonatomic, copy, nullable) NSIndexSet *acceptableStatusCodes

      • AFURLSessionManager

      提供了對NSURLSession操作的封裝

      創(chuàng)建數(shù)據(jù)任務(wù):

      - (NSURLSessionDataTask *)dataTaskWithRequest:(NSURLRequest *)request completionHandler:(nullable void ( ^ ) ( NSURLResponse *response , id responseObject , NSError *error ))completionHandler

      manager的屬性:

      // 完成block執(zhí)行所在任務(wù)隊列 
      @property (nonatomic, strong, nullable) dispatch_queue_t completionQueue
      // 請求執(zhí)行所在任務(wù)隊列 
      @property (readonly, nonatomic, strong) NSOperationQueue *operationQueue
      // 響應(yīng)對象的序列化工具
      @property (nonatomic, strong) id responseSerializer
      ...

      下載任務(wù)及上傳任務(wù)在后面的文章介紹

      • AFNetworkingActivityIndicatorManager

      用于方便地管理狀態(tài)欄上的網(wǎng)絡(luò)活動指示器

      獲得全局對象:

      + (instancetype)sharedManager

      網(wǎng)絡(luò)活動指示器的顯示狀態(tài):

      @property (nonatomic, assign, getter=isEnabled) BOOL enabled
      @property (readonly, nonatomic, assign) BOOL isNetworkActivityIndicatorVisible

      為了方便正確地控制指示器狀態(tài),在管理對象中包含一個整型的引用計數(shù),當(dāng)>0時顯示,==0時不顯示

      在發(fā)起網(wǎng)絡(luò)請求前,使用下面的方法,對引用計數(shù)+1:

      - (void)incrementActivityCount

      在完成網(wǎng)絡(luò)請求后,使用下面的方法,對引用計數(shù)-1:

      - (void)decrementActivityCount

      • AFNetworkReachabilityManager

      用于檢測網(wǎng)絡(luò)的可達(dá)性,如:

      [[AFNetworkReachabilityManager sharedManager] startMonitoring];
      [[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
          switch (status) {
              case AFNetworkReachabilityStatusNotReachable:
                  NSLog(@"無網(wǎng)絡(luò)");      break;
              case AFNetworkReachabilityStatusReachableViaWiFi:
                  NSLog(@"WiFi網(wǎng)絡(luò)”);   break;
              case AFNetworkReachabilityStatusReachableViaWWAN:
                  NSLog(@"無線網(wǎng)絡(luò)”);  break;
              default:
                  break;
          }
      }];

      • UIKit的分類

      AFN框架和SDWebImage類似,也提供了很多UI控件的分類

      • AFNetworking源碼中的一些常用技巧

      所有的單例都是用dispatch_once創(chuàng)建,保證只執(zhí)行一次

      block中對self關(guān)鍵字的訪問,如代碼段:

      __weak __typeof(self)weakSelf = self;
      self.backgroundTaskIdentifier = [application beginBackgroundTaskWithExpirationHandler:^{
          __strong __typeof(weakSelf)strongSelf = weakSelf;
      }];

         第一個weakSelf是為了block中不持有self,避免出現(xiàn)循環(huán)引用

         第二個strongSelf是為了保證在block執(zhí)行過程中,這個self不會被釋放

      • 常用類的說明

      AFURLRequestOperation繼承自NSOperation,描述網(wǎng)絡(luò)請求任務(wù)對象

         管理著NSURLConnection,并實現(xiàn)了其代理方法

      AFHTTPRequestOperation又是AFURLRequestOperation的子類

         包含請求任務(wù)成功或失敗時需要執(zhí)行的block(實際上這些block是在代理方法中被調(diào)用)

      AFHTTPRequestOperationManager用于快速創(chuàng)建AFHTTPRequestOperation并添加到任務(wù)隊列中

      AFURLRequestSerialization用于幫助構(gòu)建NSURLRequest

      格式化參數(shù):

         一般我們請求都會按key=value的方式帶上各種參數(shù),GET方法參數(shù)直接加在URL上,POST方法放在body上,NSURLRequest沒有封裝好這個參數(shù)的解析,只能我們自己拼好字符串。AFNetworking提供了接口,讓參數(shù)可以是NSDictionary, NSArray, NSSet這些類型,再由內(nèi)部解析成字符串后賦給NSURLRequest。

      轉(zhuǎn)化過程大致是這樣的:

      另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


      當(dāng)前名稱:iOS網(wǎng)絡(luò)開發(fā)(7)大牛們的杰作AFNetworking-創(chuàng)新互聯(lián)
      本文鏈接:http://www.ef60e0e.cn/article/ejoeo.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        夏河县| 安仁县| 法库县| 黎城县| 曲水县| 游戏| 商水县| 泰州市| 安塞县| 沅陵县| 治县。| 霍城县| 新竹市| 巴里| 永济市| 天津市| 宁强县| 茂名市| 深泽县| 娄烦县| 大石桥市| 云阳县| 金门县| 湖南省| 新巴尔虎右旗| 手机| 马关县| 彭泽县| 寿宁县| 比如县| 苏尼特左旗| 绥棱县| 雅安市| 天长市| 固始县| 金湖县| 六枝特区| 寻甸| 龙南县| 临沂市| 林周县|