大家好,提前感谢您在理解如何将一些 NSURLConnection 代码转换为较新的 NSURLSession 方面提供的任何帮助。我想要做的是向服务器发出 POST 请求,并发送为密钥“照片”编码的照片库 64。
下面我有一个用 NSURLConnection 编写的工作示例,我想将其转换为 NSURLSession。
正如我从我的理解中阅读苹果文档一样,我应该使用数据任务,因为在我的情况下它是一个图像,如果它是像视频这样的较大传输,我应该使用上传任务。
关于上传任务,我找到了下一个教程,但问题是在我的情况下,我还设置了一个标题,而且我的内容类型应该是 multipart/form-data。
NSURL *url = [NSURL URLWithString:myLink];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
[request setHTTPMethod:@"POST"];
[request addValue:parameter1 forHTTPHeaderField:header1];
[request addValue:parameter2 forHTTPHeaderField:header2];
[request addValue:parameter3 forHTTPHeaderField:header3];
[request addValue:parameter4 forHTTPHeaderField:header4];
[request addValue:parameter5 forHTTPHeaderField:header5];
[request setHTTPBody:[UIImageJPEGRepresentation(avatarImage, 1.0) base64EncodedDataWithOptions:NSDataBase64Encoding64CharacterLineLength]];
[NSURLConnection sendAsynchronousRequest:request
queue:[NSOperationQueue mainQueue]
completionHandler:^(NSURLResponse *response, NSData *data, NSError *error){
NSHTTPURLResponse *httpResp = (NSHTTPURLResponse*) response;
NSError *jsonError;
if(httpResp.statusCode == 200){
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data
options:NSJSONReadingAllowFragments
error:&error];
if (!jsonError) {
[[NSUserDefaults standardUserDefaults] setObject:[dict objectForKey:@"photo_url"] forKey:@"avatarLink"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
}
else {
NSString *errorCode = [NSString stringWithFormat:@"An error has occured while uploading the avatar: %ld", (long)httpResp.statusCode];
[GeneralUse showAlertViewWithMessage:errorCode andTitle:@"Error"];
}
}];
我想提一下,我尝试使用 Ray Wenderlich 教程构建一个工作示例,但我在设置标题的方式方面遇到了错误
预先感谢您提供的任何帮助!