服务器上的身份验证错误

时间:2013-11-21 13:34:09

标签: html ios objective-c authentication

这是我的代码:

#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 !!

1 个答案:

答案 0 :(得分:1)

您需要正确设置参数字符串。

在您的代码中

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

这看起来像您要使用内容类型application/x-www-form-urlencoded。但是,参数字符串以“&”开头 - 这绝对是一个错误。

当使用内容类型为application/x-www-form-urlencoded的类似参数时,我建议将参数创建为(未编码的)NSString键/值对,创建NSDictionary并使用下面描述的辅助方法答案在这里(API POST method not saving data in sql server)创建一个正确编码的参数字符串,您可以将其添加到正文中。

不要忘记将“Content-Type”标题设置为application/x-www-form-urlencoded