Ошибка аутентификации на сервере

0

Этот мой код:

#import "MainClass.h"
@implementation MainClass

- (IBAction)actionButton:(id)sender {
    NSMutableURLRequest* request = [NSMutableURLRequest requestWithURL:[NSURL
                                                                        URLWithString:@"https://login.dnevnik.ru/auth"]
                                                           cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:15.0];
    request.HTTPMethod = @"POST";

    NSString *username = _loginLogin.text;
    NSString *password= _passwordLogin.text;
    GlobalUserName = username;
    GlobalPassword = password;

    /*NSUserDefaults *loginData = [NSUserDefaults standardUserDefaults];
    NSString *username1 = [loginData objectForKey:@"username"] ;
    NSString *password1 = [loginData objectForKey:@"password"];*/


    NSString * param = [NSString stringWithFormat:@"&username=%@&password=%@", username, password];
    request.HTTPBody = [param dataUsingEncoding:NSUTF8StringEncoding];

    NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];


    if (connection) {
        _otvet.text = @"Connection setup";
        NSLog(@"ama ama");

    }
    else
    {
        _otvet.text=@"Problem with connection";
        NSLog(@"ama ama faza");
    }
    }
- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    [receivedData setLength:0];

}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{

    [receivedData appendData:data];
}

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
    UIAlertView *errorAlert = [[UIAlertView alloc]
                               initWithTitle:@"Ошибка" message:@"Problem with intrnet" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [errorAlert show];
}


- (void)connectionDidFinishLoading:(NSURLConnection *)connection {

    NSString * data = [[NSString alloc] initWithData:receivedData encoding:NSUTF8StringEncoding];

    if ([data  isEqual: @"OK"]) {

        _otvet.text = @"Yeah";
        NSLog(@"Yeah");
    }
    else
    {
        NSLog(@"Error %@,%@",GlobalUserName,GlobalPassword);
  }
}

Показать сообщение, что NSLog(@"Error %@,%@",GlobalUserName,GlobalPassword) потому что метод isEqual говорит, что мои данные не совпадают. Что я должен делать? И я не уверен, что отправка правильного входа в систему и пароль. Скажите мне, как определить, куда (куда) отправить данные, у меня нет сайта! Сайт www.dnevnik.ru !!

  • 0
    Используйте сетевой анализатор, такой как Charles Proxy, и вы сможете увидеть, что происходит. Charles Proxy может обрабатывать / отображать SSL-соединения. Затем вы можете выполнить ручной вход в систему и запустить свой код и увидеть разницу.
  • 0
    Лучше не называть строку: NSString * data с именем: «data».
Показать ещё 1 комментарий
Теги:
authentication

1 ответ

1

Вам нужно правильно настроить строку параметров.

Здесь в вашем коде

NSString * param = [NSString stringWithFormat:@"&username=%@&password=%@", username, password];
request.HTTPBody = [param dataUsingEncoding:NSUTF8StringEncoding];

Похоже, вы хотите использовать application/x-www-form-urlencoded типа контента application/x-www-form-urlencoded. Однако строка параметров начинается с "&" - и это определенно ошибка.

При использовании таких параметров, как application/x-www-form-urlencoded типа контента application/x-www-form-urlencoded, я бы предложил создать ваши параметры как (unencoded) пары ключей/значений NSString, создать NSDictionary и использовать следующий вспомогательный метод, описанный в ответе здесь (Метод API POST не сохраняет данные на сервере sql), который создает правильно закодированную строку параметров, которую вы можете добавить в тело.

Не забудьте установить заголовок "Content-Type" в application/x-www-form-urlencoded.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню