2015-06-22 61 views
0

我想测试用户完成所有字段后连接设置是否正确。我已经连线,但如果用户名或密码不正确,我想要一个条件。使用xcode测试ios应用程序的登录

我MainViewController.m

NSString* host = @"http://www.example.com"; 
     NSString* complement = @"/account/login"; 



     NSString* user_name = [[NSUserDefaults standardUserDefaults] valueForKey:@"Identifiant"]; 
     NSString* password = [[NSUserDefaults standardUserDefaults] valueForKey:@"Password"]; 
     //Add URL + Folder 
     NSString *urlString = [NSString stringWithFormat:@"%@%@", host, complement]; 


     //NSURL *url = [NSURL URLWithString:urlString]; 
     NSURL *url = [NSURL URLWithString:urlString]; 


     //NSURLRequest *request = [NSURLRequest requestWithURL:url]; 

     //Add some informations POST 
     NSString *post = [NSString stringWithFormat:@"user_name=%@&password=%@&submit=submit", user_name, password];; 


     NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES]; 

     NSString *postLength = [NSString stringWithFormat:@"%lu", (unsigned long)[postData length]]; 
     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; 
     [request setHTTPMethod:@"POST"]; 
     [request setValue:postLength forHTTPHeaderField:@"Content-Length"]; 
     [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"]; 
     [request setHTTPBody:postData]; 


     NSOperationQueue *queue = [[NSOperationQueue alloc] init]; 



     [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) 
     { 
      if ([data length] > 0 && error == nil) [_loadscreen loadRequest:request]; 
      else if (error != nil) NSLog(@"Error: %@", error); 
     }]; 

如果密码或ID是不正确的,我想显示一个错误,其实,当它是不正确,它是在网页视图显示登录页面,但我不要显示登录网页。

+0

的意见吗? – Mrunal

+0

目前没有显示,没有错误,没有回应。我觉得应用程序收到一个积极的响应,突然webview加载,但一旦加载它将我重定向到登录页面,因为标识符不正确 – ewan

回答

1

为什么你这样做,为什么你使用'POST'方法你没有发布到服务器页面的东西。你只需要实现Json解析多数民众赞成它试试这个:

你只需要在你的PHP代码结束做一些更正。当userId &密码不匹配时,告诉他们返回成功=“0”,如果它们匹配,则返回“1”。 :

NSHTTPURLResponse *response = nil; 
NSString *jsonUrlString = [NSString stringWithFormat:@"http://www.example.com/pagename.php?username=%@&password=%@",emailText.Text,passwordText.Text]; 

NSURL *url = [NSURL URLWithString:[jsonUrlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]]; 
NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url]; 
NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil]; 
NSMutableArray *result = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableContainers error:nil]; 

NSLog(@"%@",result); 

NSString *stringData = [result valueForKey:@"success"]; 
if ([stringData isEqualToString:@"0"]) { 
    UIAlertView *alert = [[UIAlertView alloc]initWithTitle:nil message:@"wrong credentials" delegate:self cancelButtonTitle:@"Ok" otherButtonTitles:nil, nil]; 
[alert show]; 
} else { 
//perform anything you want to perform 
} 
+0

我需要在我的PHP文件上写一个json代码? – ewan

+1

不,不,这段代码是用XCode编写的。当您填写用户名和密码后按下提交按钮。将该代码粘贴到该函数下。并要求你php的人在PHP结束时采取汽车。 – Nitin

+0

当我尝试的代码,我有这个日志:(空),这是错误日志,我没有登录 – ewan

0

入住你在响应和错误获取块

[NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) 
     { 
      if ([data length] > 0 && error == nil) 
      { 
       [_loadscreen loadRequest: [NSURLRequest requestWithURL:[NSURL URLWithString:@"<new page url>"]]]; 
       // Over here you are loading the same request object, which contains older request URL in it. 
       // There should be new URL request which lead the user to next page URL. 
      } 
      else if (error != nil) 
      { 
       NSLog(@"Error: %@", error); 
      } 
     }]; 
+0

如何加载不同的URL? – ewan

+0

更新回答。 – Mrunal

+0

我总是重定向到我的登录页面:/ – ewan