我想在用户完成所有字段后测试连接设置是否正确。我已经连接,但我想要一个条件,如果用户名或密码不正确。
我的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不正确,我想显示一个错误,实际上,当它不正确时,它在webview上显示登录页面,但我不想显示登录网页。
最佳答案
为什么要这样做,为什么要使用“POST”方法而不是将内容发布到服务器页面。你只需要实现 Json Parsing 就可以了,试试这个:
你只需要在你的 php 代码结束时做一些更正。告诉他们当 userId 和密码不匹配时返回 success =“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
}
关于ios - 使用 xcode 在 ios 应用程序上测试登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30977353/