Ios 如何在AFMultipartFormData AF3中发送密钥输入参数

Ios 如何在AFMultipartFormData AF3中发送密钥输入参数,ios,asp.net,objective-c,multipartform-data,afnetworking-3,Ios,Asp.net,Objective C,Multipartform Data,Afnetworking 3,以下是我发送请求的方式: NSString *string = [NSString stringWithFormat:@"%@/API/Upload",BaseURLString]; AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; [manager setRequestSerializer:[AFHTTPRequestSerializer serializer]]; [manager setR

以下是我发送请求的方式:

NSString *string = [NSString stringWithFormat:@"%@/API/Upload",BaseURLString];
    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    [manager setRequestSerializer:[AFHTTPRequestSerializer serializer]];
    [manager setResponseSerializer:[AFHTTPResponseSerializer serializer]];
    NSError *error;
manager.responseSerializer.acceptableContentTypes = nil;
for(NSData *eachImage in self.fetchedAtt) {
NSString *mystring = @"786";
        NSURLRequest *request = [manager.requestSerializer multipartFormRequestWithMethod:@"POST" URLString:string parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFormData:eachImage name:@"myImage"];
            [formData appendPartWithFormData:[mystring dataUsingEncoding:NSUTF8StringEncoding]
                                        name:@"PracticeCode"];
} error:&error];

        NSURLSessionDataTask *task = [manager dataTaskWithRequest:request uploadProgress:nil downloadProgress:nil completionHandler:^(NSURLResponse * _Nonnull response, id  _Nullable responseObject, NSError * _Nullable error) {
            if (error) {
                NSLog(@"%@", error.localizedDescription);
                return;
            }

            NSLog(@"%@", [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding]);
        }];
        [task resume];
    }
}
NSString*string=[NSString stringWithFormat:@“%@/API/Upload”,BaseURLString];
AFHTTPSessionManager*manager=[AFHTTPSessionManager-manager];
[manager setRequestSerializer:[AFHTTPRequestSerializer]];
[manager setResponseSerializer:[AFHTTPResponseSerializer序列化程序]];
n错误*错误;
manager.responseSerializer.acceptableContentTypes=nil;
for(NSData*eachImage在self.fetchedAtt中){
NSString*mystring=@“786”;
NSURLRequest*request=[manager.requestSerializer multipartFormRequestWithMethod:@“POST”URLString:字符串参数:nil constructingBodyWithBlock:^(id formData){
[formData appendPartWithFormData:eachImage名称:@“myImage”];
[formData appendPartWithFormData:[mystring数据使用编码:NSUTF8StringEncoding]
名称:@“实践代码”];
}错误:&错误];
NSURLSessionDataTask*task=[manager dataTaskWithRequest:request uploadProgress:nil downloadProgress:nil completionHandler:^(NSURLResponse*\u非空响应,id\u可空响应对象,NSError*\u可空错误){
如果(错误){
NSLog(@“%@”,错误。本地化描述);
返回;
}
NSLog(@“%@,[[NSString alloc]initWithData:responseObject编码:NSUTF8StringEncoding]);
}];
[任务恢复];
}
}
有时我会:

{“Message”:“将MIME多部分正文部分写入输出时出错” 流。“}

//这是一个错误 有时我会

请求失败:不支持的媒体类型(415)


试试这个AF3.0

 NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString: [NSString stringWithFormat:@"%@/API/Upload",BaseURLString]; parameters:@{@"text":@"name"} constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {

         [formData appendPartWithFileData:[NSData dataWithContentsOfURL:[NSURL URLWithString:imageurl]] name:@"bizcard" fileName:@"Businesscard.jpg" mimeType:@"image/jpeg"]; // you file to upload
        } error:nil];

    AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
    manager.responseSerializer = [AFJSONResponseSerializer serializer];

    NSURLSessionUploadTask *uploadTask;
    uploadTask = [manager
                  uploadTaskWithStreamedRequest:request
                  progress:^(NSProgress * _Nonnull uploadProgress) {
                      dispatch_async(dispatch_get_main_queue(), ^{
                      });
                  }
                  completionHandler:^(NSURLResponse * _Nonnull response, id  _Nullable responseObject, NSError * _Nullable error) {
                      if (error) {
                          NSLog(@"Error: %@", [[NSString alloc]initWithData:[[error valueForKey:@"userInfo"] valueForKey:@"com.alamofire.serialization.response.error.data"] encoding:NSUTF8StringEncoding]);
                          callback(NO,nil);
                          [UtilityClass removeActivityIndicator];

                      } else {
                          callback(YES,responseObject);
                      }
                  }];

    [uploadTask resume];
NSMutableURLRequest*request=[[AFHTTPRequestSerializer]multipartFormRequestWithMethod:@“POST”URLString:[NSString stringWithFormat:@“%@/API/Upload”,BaseURLString];参数:@{@“text”:@“name”}constructingBodyWithBlock:^(id formData){
[formData appendPartWithFileData:[NSData dataWithContentsOfURL:[NSURL URLWithString:imageurl]]名称:@“bizcard”文件名:@“Businesscard.jpg”mimeType:@“image/jpeg”];//您需要上传的文件
}错误:无];
AFURLSessionManager*manager=[[AFURLSessionManager alloc]initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
manager.responseSerializer=[AFJSONResponseSerializer序列化程序];
NSURLSessionUploadTask*上传任务;
uploadTask=[manager]
uploadTaskWithStreamedRequest:请求
进度:^(NSProgress*_非空上传进度){
dispatch\u async(dispatch\u get\u main\u queue()^{
});
}
completionHandler:^(NSURLResponse*\u非空响应,id\u可空响应对象,NSError*\u可空错误){
如果(错误){
NSLog(@“Error:%@,[[NSString alloc]initWithData:[[Error valueForKey:@“userInfo”]valueForKey:@“com.alamofire.serialization.response.Error.data”]编码:NSUTF8StringEncoding]);
回调(否,无);
[UtilityClass removeActivityIndicator];
}否则{
回调(是,responseObject);
}
}];
[上传任务恢复];

< /代码> 您试图在一个多形式请求中发送多个文件。Multipart不这样工作。您必须一次生成1个文件的多个多部分请求。因此,考虑您有20个文件。您将创建一个异步任务,每次一个文件,上传它,然后为下一个文件再次执行相同的函数。美国


如果要保留引用,应该从后端返回文件ID,然后将所有ID附加到单个数组中,并在单独的api请求中将该数组作为参数发送,以链接文件和任何对象。希望这有意义。

附加此ID是参数mystring@Anbu.Karthik对不起,我没听懂你说的话?