POST и несколько кнопок отправки в форме - PullRequest
0 голосов
/ 05 мая 2010
    NSString *reqURL = [NSString stringWithFormat:@"%@/login",SERVER_URL];

    NSMutableURLRequest *req = [[NSMutableURLRequest alloc]initWithURL:[NSURL URLWithString:reqURL]];
    [req setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"content-type"];


    NSData *myRequestData = [NSData dataWithBytes:[@"username=whatever&password=whatever" UTF8String] length: [@"username=whatever&password=whatever" length]];
    [req setHTTPMethod: @"POST"];
    [req setHTTPBody: myRequestData];
    NSData *returnData = [NSURLConnection sendSynchronousRequest:req returningResponse: nil error: nil];
    NSString *html = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];

Я получил этот код из другого вопроса, который я задал. Но что произойдет, если есть более одной кнопки отправки. Я действительно понятия не имею, как задать этот вопрос. Пример такой ситуации - на странице выхода для этого сайта. Нет полей для ввода данных, но есть 2 кнопки отправки.

Как я могу "имитировать нажатие" на одну из этих кнопок, используя код, подобный приведенному выше (поэтому не используя UIWebView)

1 Ответ

0 голосов
/ 06 мая 2010

То, как эти формы обычно сообщают, какая кнопка была нажата, заключается в именовании их кнопок и проверке значения. Проще говоря, базовая страница, получающая данные формы, будет проверять, была ли форма даже отправлена, проверяя, является ли ($ _POST ['submit'] == "Отправить!"), Которая сообщает странице, что пользователь попал туда, нажав кнопку. Та же концепция используется при принятии решения, какая кнопка была нажата.

if ($ _POST ["submit"] == "Send!") addDataToDB ();
иначе если ($ _POST ["submit"] == "Update!") updateUser ();
иначе если ($ _POST ["submit"] == "Удалить меня!") removeUser ();

Итак, теперь вам нужно проверить источник html-страницы с помощью формы и узнать имя и значение кнопки отправки, которую вы хотите смоделировать, и добавить эти данные в данные тела POST в вашем запросе.

Обновление: Упс! неправильно понял ваш вопрос, подумал, что вы имели в виду несколько кнопок отправки в одной форме на одной странице, но теперь я думаю, что вы имели в виду, что одна форма переходила в другую форму «подтверждения» ... В вашем методе делегата didRecieveData вам нужно будет сохранить все полученные HTML а в вашем методе делегата didFinishLoading вам нужно будет извлечь любые скрытые имена и значения полей, а затем создать новый запрос с ними в качестве данных POST, а URL-адрес будет являться URL-адресом «действия» в форме

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...