2012-06-20 114 views
0

У меня есть приложение, которое использует webView. На главном экране веб-сайта я хочу войти в систему, используя имя пользователя и пароль, введенные пользователем в настройках параметров приложения. В настоящее время у меня есть этот код, который я видел в решении аналогичного вопроса, заданного на этом форуме. Но он не работает (и не для другого).Вход с настройками имени пользователя и пароля

-(IBAction)cachepressed:(id)sender{ 

    NSString *baseurl=[[NSUserDefaults standardUserDefaults] stringForKey:@"url_preference"]; 
    NSString *username= [[NSUserDefaults standardUserDefaults] stringForKey:@"name_preference"]; 
    NSString *password= [[NSUserDefaults standardUserDefaults] stringForKey:@"pswrd_preference"];  
    NSString* content = [NSString stringWithFormat:@"username=%@&password=%@", username, password]; 
    NSData *data=[content dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; 
    NSString *postlength=[NSString stringWithFormat:@"%d",[data length]]; 
    NSString *loginpage= [baseurl stringByAppendingString:@"/index.php?title=Special:UserLogin"]; 
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:loginpage]]; 
    [request setHTTPMethod:@"POST"]; 
    [request setValue:postlength forHTTPHeaderField:@"Content-Length"]; 
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Length"]; 
    [request setHTTPBody:data]; 
    NSError *error=nil; 
    NSURLResponse *response=nil; 
    NSData *result=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 
    NSString *HTMLString = [[NSString alloc] initWithData:result encoding:NSUTF8StringEncoding]; 
    [webView loadHTMLString:HTMLString baseURL:[NSURL URLWithString:loginpage]];  

} 

Я не слишком уверен в двух строках кода, начиная с [request setValue ...]. Может ли кто-нибудь предложить решение? Это было бы большой помощью. Спасибо в ожидании.

ответ

0

Это зависит от того, как делается аутентификация на веб-сайте.

Основываясь на том, что я могу понять из вашего вопроса, отправленный вами код отправляет значения для полей с именем «имя пользователя» и «пароль» на страницу index.php? Title = Special: UserLogin с помощью POST.

Необходимо убедиться, что все установлено соответствующим образом.

1. Являются ли ваши поля одинаковыми на веб-сайте?

Возможно, в форме входа используются разные имена полей, а не имя пользователя и пароль. Проверьте исходный код и посмотрите, действительно ли имена ввода «имя пользователя» и «пароль»

2. Предоставляет ли ваш хост возможность отправлять данные из другого источника?

Я использовал для установки так, чтобы запрос POST не работал, если они не были созданы с моего сервера, поэтому POSTing данные с iPad не будут работать. Это для вас тоже?

3. Процесс регистрации действительно выполняется путем размещения данных на этой странице?

Возможно, на сайте аутентификация выполняется с использованием AJAX на другой php-странице, а затем вы перенаправлены на index.php? Title = Special: UserLogin, я видел такие случаи в прошлом.

Подводя итог, вы должны точно знать, как логин делается на веб-сайте, прежде чем делать это в веб-просмотре. Исправьте меня, если я ошибаюсь, но на основании вашего сообщения это, похоже, не так.

+0

Спасибо, что ответили. Я исправил имена полей, как вы указали правильно. Но я не знаю о двух других моментах. Есть ли способ узнать? – gamersoul

+0

Ну, номер 2 маловероятен, большинство веб-сайтов разрешают внешние POST-запросы. С номером 3 я думаю, что самый простой способ проверить - это посмотреть на исходный код веб-сайта в браузере. Ссылка на сайт будет полезна – BBog

Смежные вопросы