Network 【用 AFN 通過 POST 方式傳送JSON資料的兩種形式】
阿新 • • 發佈:2019-01-07
POST 傳送資料有兩種形式:
1、傳送純文字的內容
2、傳送的 body 部分帶有檔案(圖片,音訊或者其他二進位制資料)
1、使用 POST 方式傳送純文字內容:
[mgr POST:@"https://AAAAA" parameters:params success:^(AFHTTPRequestOperation *operation, NSDictionary *responseObject) { [MBProgressHUD showSuccess:@"Send success by WZY"]; } failure:^(AFHTTPRequestOperation *operation, NSError *error) { [MBProgressHUD showError:@"Send failed by WZY"]; }];
2、傳送的 body 部分帶有檔案(圖片,音訊或者其他二進位制資料)
// 這是一個帶有普通拼接引數和圖片引數的上傳資訊的介面 POST + (void)registerWithProvinceId:(int)provinceId cityId:(int)cityId plateNo:(NSString *)plateNo brandId:(int)brandId color:(NSString *)color owner:(NSString *)owner idCardNo:(NSString *)idCardNo source:(int)source images:(NSArray *)imageArr callback:(BLOCK)callBack { NSString *path = @"https://www.*****"; NSDictionary *params = @{ @"platform":@"IOS", @"imei":IDENTIFIER_NUMBER, @"manufacturer":@"apple", @"version":PHONE_VERSION, @"model":PHONE_TYPE, @"appVersion":APP_VERSION, @"provinceId":@(provinceId), @"cityId":@(cityId), @"plateNo":plateNo, @"brandId":@(brandId), @"color":color, @"owner":owner, @"idCardNo":idCardNo, @"source":@(source) }; AFHTTPSessionManager *manager = [BPBServerReqestUtils sharedHTTPSession]; manager.responseSerializer = [AFHTTPResponseSerializer serializer]; [manager POST:path parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) { // 使用日期生成圖片名稱(先在陣列中取UIImage物件,然後一個一個轉化為NSData型別的資料) for (int i = 0; i < imageArr.count; i++) { UIImage *image = imageArr[i]; // 讀取圖片資料(iOS 有以下兩種讀取圖片資料的方法) NSData *data = UIImagePNGRepresentation(image); // NSData *data = UIImageJPEGRepresentation(image, 0.5); NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss"; NSString *fileName = [NSString stringWithFormat:@"%@.png", [formatter stringFromDate:[NSDate date]]]; // NSLog(@"%@",[NSString stringWithFormat:@"Image%d",i+1]); /** * 把圖片資料 新增到請求體裡面 * data 圖片data資料,分為JPEG、PNG兩種。 * name 後臺接收引數名(介面文件中應有標識:image1、image2、image3) * fileName 上傳上去的圖片名稱,可以自行定義。填nil也是可以的。(注意這裡一定要加.jpg或者.png,具體加什麼得和上面讀取圖片資料型別保持一致) * mimeType 要和上面image的格式保持一致。(可以直接寫 png,也可以寫 image/png) */ // [formData appendPartWithFileData:data name:[NSString stringWithFormat:@"image%d",i+1] fileName:fileName mimeType:@"image/png"]; [formData appendPartWithFileData:data name:[NSString stringWithFormat:@"image%d",i+1] fileName:fileName mimeType:@"png"]; } } progress:^(NSProgress * _Nonnull uploadProgress) { NSLog(@"進度:%@",uploadProgress); } success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject options:0 error:nil]; callBack(dic); } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { callBack(error); }]; }