2015-09-15 45 views
0

我不知道這是一個錯誤還是我只是不正確。AFNetworking multipart/form-data POST發送不正確的JSON字典陣列

這個職位看起來如此接近解決它爲我,但沒有:AFNetworking posts JSON arrays as multiple single-entry dictionaries

我試圖與發送的圖像的multipart/form-data發佈和傳遞一個字典(其中包含數組字典)以'參數'作爲JSON發送。

字典:

NSDictionary *parameters = @{@"photos" : @[@{@"photoID":@"0", @"imageURL":@"0", @"imageName":@"0"}, 
              @{@"photoID":@"1", @"imageURL":@"1", @"imageName":@"1"}, 
              @{@"photoID":@"2", @"imageURL":@"2", @"imageName":@"2"}]}; 

請求:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; 
manager.requestSerializer = [AFJSONRequestSerializer serializer]; 


[manager POST:@"myURL" parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 
     [formData appendPartWithFileData:imageData name:@"image" fileName:@"image" mimeType:@"image/png"]; 

    } success:^(AFHTTPRequestOperation *operation, id responseObject) { 
     NSLog(@"Success: %@", responseObject); 

    } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
     NSLog(@"Error: %@", error); 
    }]; 

的圖像被髮送和接收的精細,但是JSON在服務器上接收到的是這樣的:

{ 
    photos =  (
       { 
      imageName = 0; 
     }, 
       { 
      imageURL = 0; 
     }, 
       { 
      photoID = 0; 
     }, 
       { 
      imageName = 1; 
     }, 
       { 
      imageURL = 1; 
     }, 
       { 
      photoID = 1; 
     }, 
       { 
      imageName = 2; 
     }, 
       { 
      imageURL = 2; 
     }, 
       { 
      photoID = 2; 
     } 
    ); 
} 

...一組多個單項詞典:(

相反的:

{ 
    photos =  (
       { 
      imageName = 0; 
      imageURL = 0; 
      photoID = 0; 
     }, 
       { 
      imageName = 1; 
      imageURL = 1; 
      photoID = 1; 
     }, 
       { 
      imageName = 2; 
      imageURL = 2; 
      photoID = 2; 
     } 
    ); 
} 

任何幫助將是巨大的,謝謝!

回答

1

當在AFNetworking中構造多部分請求時,參數作爲form-data發送。要在多部分響應中發送JSON編碼體,您需要對它們進行序列化並將它們附加到多部分響應中,作爲服務器如何接收它們的響應。

根據您的服務器是如何期待他們,你可以使用類似:

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:myJSON options:0 error:nil]; 

[formData appendPartWithFileData:jsonData name:@"name" fileName:nil mimeType:@"application/json"]; 
+0

謝謝,這很棒 –

0

如果您要上傳多張圖片,你想保持參數名稱同樣爲你做它作爲圖像如下:

NSDictionary *parameters = @{@"user_key": @"*****"}; 
NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:queryStringss parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 
NSError *error; 
[formData appendPartWithFileData:imageData name:@"photo_file[0]" fileName:@"Picture44.png" mimeType:@"image/png"]; 
[formData appendPartWithFileData:imageData1 name:@"photo_file[1]" fileName:@"Picture45.png" mimeType:@"image/png"]; 
} error:nil]; 

這樣文件將作爲數組發送到服務器。