将 NSData 与 NSDictionary 参数一起传递给 Web 服务
Posted
技术标签:
【中文标题】将 NSData 与 NSDictionary 参数一起传递给 Web 服务【英文标题】:Passing NSData to web service along with NSDictionary Parameter 【发布时间】:2016-03-26 16:17:29 【问题描述】:我所有的 AFNetworking 服务都是用单独的 web 服务类编写的。到目前为止,我在传递 NSDictionary 参数方面做得很好。但是现在当我需要将 NSData 文件传递给 Web 服务时遇到了问题。
我是如何执行网络服务的
NSData *imageData = UIImageJPEGRepresentation(self.profileImg.image, 0.5); // I need to pass this imageData
NSDateFormatter *dateFormatter=[[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd hh:mm:ss"];
NSString *stringFromDate = [dateFormatter stringFromDate:[NSDate date]];
//Encrypting Password
NSString *passwordString = _password.text;
NSString *passwordMD5 = [passwordString MD5String];
NSDictionary *params = @@"username": _username.text,
@"password": passwordMD5,
@"email": _email.text,
@"date":stringFromDate;
WebService *serviceObj = [[WebService alloc] init];
serviceObj.delegate = self;
[serviceObj performSelectorInBackground:@selector(doRegister:) withObject:params];
这里我是如何编写网络服务的
NSMutableDictionary * parameters = [[NSMutableDictionary alloc]initWithDictionary:params];
NSURL *baseURL = [NSURL URLWithString:@"http://www.example.com/register.php"];
AFHTTPSessionManager * manager = [[AFHTTPSessionManager alloc] initWithBaseURL:baseURL];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
[manager POST:@"" parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData)
[formData appendPartWithFileData:imageData name:@"image" fileName:@"profile.png" mimeType:@"image/png"];
progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject)
[delegate didReceiveRegisterResponse:responseObject];
failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error)
];
但我现在不知道如何分配该图像数据。
【问题讨论】:
【参考方案1】:我已经在数组中传递了 NSData 和 NSDictionary。如下所示
[self performSelectorInBackground:@selector(reloadPage:)
withObject:[NSArray arrayWithObjects:pageIndex,firstCase,nil] ];
- (void) reloadPage: (NSArray *) args
NSString *pageIndex = [args objectAtIndex:0];
NSString *firstCase = [args objectAtIndex:1];
从question得到答案
【讨论】:
以上是关于将 NSData 与 NSDictionary 参数一起传递给 Web 服务的主要内容,如果未能解决你的问题,请参考以下文章
将 NSDictionary 对象转换为 NSData 对象,反之亦然
将 JSON 数据从 NSData 转换为 NSDictionary
使用 NSJSONSerialization 将 NSDictionary 转换为 NSData