iOS開發之AFNetworking上傳

AFNetworking作爲一個網絡交互的三方庫,它的功能非常豐富,除了我們常用的數據請求外,我們在網絡上傳的時候也需要注意一下,因爲上傳的時候如果不是字符串,那麼其他的所有東西都需要轉化成NSData數據進行上傳,下面介紹一下代碼。

和取數據差不多的

首先定義一個字典,用來存放參數

NSDictionary* params = [NSDictionary dictionary];

params[@"屬性"] = 值;

上傳字段數據:

**

            //創建請求管理類

        AFHTTPRequestOperationManager* mgr = [AFHTTPRequestOperationManager manager];



        //發送請求

        [mgr POST:url parameters:params

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


                //成功回調

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


                //失敗回調

      }];**

上傳文件數據(事先將文件轉化爲二進制data):

//創建請求管理類

AFHTTPRequestOperationManager* mgr = [AFHTTPRequestOperationManager manager];



//發送請求

[mgr POST:url parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> totalformData) {



        [totalformData appendPartWithFileData:formData.data name:formData.name fileName:formData.fileName mimeType:formData.mimeType];



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

    //成功回調


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

//失敗回調


} ];



我們除了要主要上傳之外,有些時候還要在請求中的header加入參數,這時候也可以用AFNetworking進行實現。

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];


1.首先是創建manager.requestSerializer = [AFJSONRquestSerializer serializer];


2.設置參數

value             key

[manager.requestSerializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];




設置長度



[manager.requestSerializer setValue:[NSString stringWithFormat:@"%ld", (unsigned long)[jsonStr length]] forHTTPHeaderField:@"Content-Length"];



設置請求編碼類型


[manager.requestSerializer setValue:@"gzip" forHTTPHeaderField:@"Content-Encoding"];



本文有因爲問題請聯繫

QQ:563699115

Telephone:18341266547


發佈了28 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章