Я попытался отправить данные POST в файл php с помощью asynch и synch NSURLConnection и ASIHTTPRequest, но оба отказываются фактически повторять что-либо в $_POST. Мой файл s.php выглядит так:
<?php
echo 'Hi There';
echo $_POST['fname'];
foreach ($_POST as $i => $value) {
echo($i);
}
?>
Мой ASIHTTRequest:
NSURL *url = [[NSURL alloc] initWithString:@"http://server.com/s.php"];
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:@"Ben" forKey:@"fname"];
[request setDelegate:self];
[request setDidFinishSelector:@selector(requestFinished:)];
[request startAsynchronous];
Который печатает только строку Hi There, когда возвращается к requestFinished.
Изменить: используя ASIFormDataRequest, я почти уверен, что запрос уже настроен на POST, по крайней мере, похоже, нет способа установить его вручную. Когда я попробовал NSURLConnection, я использовал:
NSURL *url = [NSURL URLWithString:@"http://server.com/s.php"];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
[request setHTTPMethod:@"POST"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
[request setHTTPBody:[[NSString stringWithFormat:@"fname=carl"] dataUsingEncoding:NSUTF8StringEncoding]];
NSURLResponse *response;
NSData *urlData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil];
NSString *stringResponse = [[NSString alloc] initWithData:urlData encoding:NSASCIIStringEncoding];
NSLog(@"%@",stringResponse);
И все еще получаю только строку «Привет», а также получаю нормальные ответы, когда использую html-форму.