簡単な質問があります。現在、サーバーへのデータ送信に関連するアプリの特定の部分を書いています。
テキストを送信しようとしましたが、成功しました。画像を送信しました。成功しました。私が今やろうとしているのは、1 つの POST リクエスト内で両方を送信することです。マルチパート/フォームデータと境界と呼ばれるものを使用する必要があることがわかりましたが、それに関する情報はもう見つかりませんでした。
では、1 つの単純な POST 要求でテキストと画像の両方を送信するにはどうすればよいでしょうか? また、アップロード中やその後などにエラーを確認するにはどうすればよいですか?
ありがとう!
私が書いた参照コードですが、0バイトの情報を送信しています:
NSData *imageData = UIImageJPEGRepresentation(sendImage, 1.0);
// setting up the request object now
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:@"http://posttestserver.com/post.php?dir=something"]];
[request setHTTPMethod:@"POST"];
NSString *boundary = @"---------------------------54737809831466490885746641449";
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
[request addValue:contentType forHTTPHeaderField: @"Content-Type"];
NSMutableData *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"rn--%@rn",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Disposition: form-data; name=\"userfile\"; filename=\"reportingImage.jpg\"rn" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: application/octet-streamrnrn" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:imageData]];
[body appendData:[[NSString stringWithFormat:@"rn--%@--rn",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Type: text/xml" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[[alertView textFieldAtIndex:0] text] dataUsingEncoding:NSUTF8StringEncoding]];
// setting the body of the post to the reqeust
[request setHTTPBody:body];
// now lets make the connection to the web
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
NSLog(returnString);