皆さん、こんにちは。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 チュートリアルを使用して実用的な例を作成しようとしたが、ヘッダーの設定方法に関するエラーが発生したことを言及したいと思います
提供されたヘルプに事前に感謝します!