AFNetworking 使用方法(2.0)

來源:互聯網
上載者:User

標籤:

 AFNetworking 使用方法(2.0)分類: IOS2014-11-12 09:17 2018人閱讀 評論(0) 收藏 舉報 

目錄(?)[+]

 

本文介紹的是AFNetworking-2.0 使用方法(增加適應:不完善的head內的 meta的content格式)

隨著asihttprequest的停止更新,許多人都轉向了AFNetworking、 MKNetworkKit.我也是其中一個。於是我從網上找了許多文章作參考,但是結果都是失敗告終。研究了好久都搞不透,最後還是請人幫忙搞定了。經常從網上索取免費資料的一員,要有回報的思想,也為了讓更多的人少走些彎路,所以下面是代碼:(有錯誤可以指出)

 

首先:將AFNetworking、UIKit+AFNetworking 加入到工程

一般要引用這兩個包,不然會有錯誤提示:SystemConfiguration.framework、 MobileCoreServices.framework

然後在要使用的地方

 

#import "AFHTTPRequestOperationManager.h"

#import "AFHTTPSessionManager.h"

 

AFHTTPRequestOperationManager的post有兩個方法,一個是普通的post,另一個是可以上傳圖片的

1.上傳圖片:

 

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManagermanager];    manager.responseSerializer.acceptableContentTypes = [NSSetsetWithObject:@"text/html"];
    NSDictionary *parameters [email protected]{@"參數1":@"value1",@"參數2": @"value2"、、、};
    
    NSData *imageData = UIImageJPEGRepresentation([UIImage imageNamed:@"1.png"], 1.0);
    [manager POST:@"替換成你要訪問的地址"parameters:parametersconstructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
        [formData appendPartWithFileData :imageData name:@"1" fileName:@"1.png" mimeType:@"image/jpeg"];
    } success:^(AFHTTPRequestOperation *operation,id responseObject) {
        NSLog(@"Success: %@", responseObject);
    } failure:^(AFHTTPRequestOperation *operation,NSError *error) {
        NSLog(@"Error: %@", error);
    }];這個方法可以上傳圖片,如果不用上傳圖片,可以把這句去掉 [formData appendPartWithFileData :imageData name:@"1" fileName:@"1.png" mimeType:@"image/jpeg"]
2.普通的post

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManagermanager];

    manager.responseSerializer.acceptableContentTypes = [NSSetsetWithObject:@"text/html"];

    

   NSDictionary *parameters =@{@"參數1":@"value1",@"參數2":@"value2"、、、};

    

    [managerPOST:@"替換成你要訪問的地址"parameters:parameters

         success:^(AFHTTPRequestOperation *operation,id responseObject) {

             NSLog(@"Success: %@", responseObject);

              

          }failure:^(AFHTTPRequestOperation *operation,NSError *error) {

             NSLog(@"Error: %@", error);

          }];

3.增加適應:不完善的head內的 meta的content格式(2014年3月17日11:20)引用:http://www.cocoachina.com/bbs/simple/?t176000.html
tom19830924 2013-12-27 17:44
這是我第二次回答這問題了 這不是AFNetworking的問題
這是做Server那邊的人沒把head內的 meta的content格式指定好

請參考
http://stackoverflow.com/questions/477816/what-is-the-correct-json-content-type
evangel 2014-03-18 21:41
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    manager.requestSerializer = [AFJSONRequestSerializer serializer];
    manager.responseSerializer = [AFJSONResponseSerializer serializer];
    [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
    [manager.requestSerializer setValue:@"application/json; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
解決方案:我使用的是 evangel的方法,增加下面4句:    manager.requestSerializer = [AFJSONRequestSerializer serializer];
    manager.responseSerializer = [AFJSONResponseSerializer serializer];
    [manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
    [manager.requestSerializer setValue:@"application/json; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
下面是完整的請求設定:

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManagermanager];

    manager.responseSerializer.acceptableContentTypes = [NSSetsetWithObject:@"text/html"];

 

    manager.requestSerializer = [AFJSONRequestSerializerserializer];

    manager.responseSerializer = [AFJSONResponseSerializerserializer];

    [manager.requestSerializersetValue:@"application/json"forHTTPHeaderField:@"Accept"];

    [manager.requestSerializersetValue:@"application/json; charset=utf-8"forHTTPHeaderField:@"Content-Type"];

4.逾時設定(2014年10月17日15:20)afnetworking 2.0 沒有逾時設定,好像2.1以後就有了逾時時間設定。開啟你下載的版本,找到AFURLRequewtSerialization.m ,搜尋timeout。timeout預設時間是60秒,把它改成你需要的時間 
  • 上一篇iOS7 最佳實務:一個天氣應用案例(下)
  • 下一篇AFNetwork 作用和用法詳解

AFNetworking 使用方法(2.0)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.