AFNetworking 3 AFMultipartFormData获取字节数据作为响应

我这样做是为了将数组中的图像发送到服务器:

NSString *string = [NSString stringWithFormat:@"%@/API/Upload",BaseURLString]; AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc]initWithBaseURL:[NSURL URLWithString:BaseURLString]]; [manager setRequestSerializer:[AFHTTPRequestSerializer serializer]]; [manager setResponseSerializer:[AFHTTPResponseSerializer serializer]]; for(NSData *eachImage in self.fetchedAtt) { [manager POST:string parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) { [formData appendPartWithFormData:eachImage name:@"image1"]; } progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { if (responseObject != nil) { //NSDictionary *jsonDictionary = responseObject; NSLog(@"%@",responseObject); } } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { NSLog(@"%@",error.localizedDescription); }]; } 

现在我只发送一个图像进行testing。 它得到的是字节数据的responseObject

<696d6167 65313a20 efbfbdef bfbdefbf bdefbfbd 00104a46 49460001 01000048 00480000 efbfbdef bfbd0058 45786966 00004d4d 002a0000 00080002 01120003 00000001 00010000 efbfbd69 00040000 00010000 00260000 00000003 efbfbd01 00030000 00010001 0000efbf bd020004 00000001 0000001e efbfbd03 …

根据networking人的反应应该是图像的url。 Web后端在ASP.NET我做错了什么?

UPDATE
如果我更改响应序列化程序,我会得到:

请求失败:不可接受的内容types:应用程序/八位字节stream

我甚至试过这个:

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

// [formData appendPartWithFormData:eachImage name:@“image1”]; [formData appendPartWithFileData:eachImage name:@“image1”fileName:@“test.jpg”mimeType:@“image / jpeg”]; }错误:&错误];

  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(@"%@", responseObject); }]; [task resume]; } 

但得到Request failed: internal server error (500) 。 如果我取消注释appendPartWithFormData和注释其他行,我在responseObject获得相同的字节。

更新更新:
我们在邮递员上进行了testing,图片上传成功。 但是,如果我给参数我得到的东西

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

当你上传图片时,你会希望从服务器得到一些回应(只是为了确认他们已经成功接收)。 话虽如此,看看你的hex数据,这很好奇。 它看起来像是:

在这里输入图像说明

“JFIF”和“Exif”引用与JPEG响应一致。 image1看起来像是你发送的图像的名称。 但这是一个非常奇怪的回应。 这绝对不是图像的url。

您应该联系Web服务作者,并获取他们正在发送的详细信息,因为它不符合标准响应(XML,JSON等)。


顺便说一下,您上传​​图片的方法看起来不正确。 你通常会做这样的事情:

 [formData appendPartWithFileData:eachImage name:@"image1" fileName:@"test.jpg" mimeType:@"image/jpeg"]; 

显然,你可以指定fileNamemimeType来匹配NSData真正NSData 。 我会仔细检查Web服务的作者是否真的想使用image1的字段名称…这是有点不典型。