Я пытаюсь опубликовать значения и файл через HTTP в приложении для iPhone.
Требуется, чтобы при публикации формы значения в полях ввода использовались для аутентификации, а если пользователь действителен, файл должен быть загружен.
Но когда я пытаюсь опубликовать форму, файл не публикуется, а опубликованные значения не принимаются URL-адресом действия.
Найдите код, используемый в приложении IPhone, иего HTML-эквивалент.Может кто-нибудь сказать, что мне не хватает?
Эквивалент HTML
<form action="http://www.something.com/upload/" method="post" enctype="multipart/form-data" target="_blank" onsubmit="return window.confirm("You are submitting information to an external page.\nAre you sure?");">
<h3>Test Form</h3>
<p>File: <input name="file" type="file"></p>
<p>Username: <input name="usr" type="text"></p>
<p>Password: <input name="pwd" type="text"></p>
<p><input name="send" value="Upload" type="submit"></p>
</form>
Код, используемый в приложении IPhone
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"test-upload" ofType:@"zip"];
NSData *postData = [NSData dataWithContentsOfFile:filePath];
NSString *urlString = @"http://www.something.com/upload/";
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];
NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"];
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
[request addValue:contentType forHTTPHeaderField: @"Content-Type"];
NSMutableData *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"\r\n%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Disposition: form-data; name=\"usr\"\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"usr@domain.com" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"\r\n%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"Content-Disposition: form-data; name=\"pwd\"\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"testpwd" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"file\"; filename=\"test-upload.zip\"rn"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:postData]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[request setHTTPBody:body];
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
NSLog(returnString);