2013-11-21 103 views
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 
    { 
     [email protected]"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說什麼我的數據是不same.What我應該做的,我不知道,送?正確的網站登錄和密碼。告訴我如何確定在哪裏發送數據,我沒有網站!網站www.dnevnik.ru!

+0

使用像Charles Proxy這樣的網絡分析器,您將能夠看到發生了什麼。 Charles Proxy可以處理/顯示SSL連接。然後,您可以執行手動登錄並運行代碼並查看其差異。 – zaph

+0

最好不要命名一個字符串:名爲「data」的'NSString * data'。 – zaph

+0

@Zaph,不是所有人都會給我寫信NSLog(@「Error%@,%@」,GlobalUserName,GlobalPassword) – MaZaHaKa

回答

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