AFNetworking 使用方法(2.0)

 

AFNetworking 使用方法(2.0)

分類: IOS
 

目錄(?)[+]html

 

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

隨着asihttprequest的中止更新,許多人都轉向了AFNetworking、 MKNetworkKit.我也是其中一個。因而我從網上找了許多文章做參考,可是結果都是失敗了結。研究了很久都搞不透,最後仍是請人幫忙搞定了。常常從網上索取免費資料的一員,要有回報的思想,也爲了讓更多的人少走些彎路,因此下面是代碼:(有錯誤能夠指出)app

 

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

通常要引用這兩個包,否則會有錯誤提示:SystemConfiguration.framework、 MobileCoreServices.frameworkurl

而後在要使用的地方spa

 

#import "AFHTTPRequestOperationManager.h".net

#import "AFHTTPSessionManager.h"orm

 

AFHTTPRequestOperationManager的post有兩個方法,一個是普通的post,另外一個是能夠上傳圖片的htm

1.上傳圖片:blog

 

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

    NSDictionary *parameters =@{@"參數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 :imageDataname:@"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秒,把它改爲你須要的時間
 
相關文章
相關標籤/搜索