iOS--登录验证用第三方不能实现时用系统自带的解析方式
2014-12-08 23:22
399 查看
转载自http://www.cnblogs.com/ios8/archive/2013/11/11/ios-login-json.html
用户输入用户名和密码,点击登录。。。我们把用户名和密码(用post方式或者get方式,get方式多用于测试看你需要)传给服务器,服务器进行判断,然后返回一个接口给我们(这里服务器返回的json接口,正确就返回一个正确的接口给我们,错误就返回一个错误的接口给我们)。我们拿到接口去解析,判断是否登录成功做相应的操作。
关于json解析,可以网上找找资料先看看,我就只知道[]是数组,{}是字典,iOS有自带的json解析的。
以前一直说接口文档,接口什么,可自己从来都是模糊的,比如说一个类的接口,我就认为是这个类的方法。。可是,我的boss给我的登录接口的文档的时候,我才知道,哦,接口文档原来是这样子的呀。。嘻嘻。。。
[
{
"result": {
"RUrl": "http://localhost/pad_4078_B7DA_676D3FE52763",
"errMsg": "",
"result": "OK",
"sid": "B67D78_B7DA_676D3FE52763"
}
}
]
jsondata[0][‘result’].result:
OK,登录成功,打开RUrl
FAIL,登录失败,取:errMsg
(1)
#import <UIKit/UIKit.h>
#import "ByValueUrl.h"
@interface LogInViewController : UIViewController <UITextFieldDelegate>{
UIActivityIndicatorView *activityIndicatorView;
UITextField *userNameTF;//用户名
UITextField *passWordTF;//密码
NSDictionary *resultDic2;
UIView *view1;//等待转圈的view
}
@property (weak, nonatomic) IBOutlet UIButton *loginButton;//登录按钮
@property (strong,nonatomic) NSString *homeURL;//登录成功拿到的url
@end
(2)
- (IBAction)login:(id)sender {
[self initaAtivityIndicatorView];
[activityIndicatorView startAnimating];//开始动画
// 定时器(设置时间为3秒)
// [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(timerFired:) userInfo:nil repeats:NO];
//加载一个NSURL对象
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://192.168.9.1/pb/l?user=%@&pwd=%@",userNameTF.text,passWordTF.text]];//这里的url输入自己的就可以,这里用的get方式,get方式都是明文,用post方式好一点
NSLog(@"userNameTF:%@-",userNameTF.text);
NSLog(@"passWordTF:%@-",passWordTF.text);
NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url];
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; //将请求的url数据放到NSData对象中
NSString *dataStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"str-%@",dataStr);
//IOS5自带解析类NSJSONSerialization从response中解析出数据放到字典中
NSError *error;
NSMutableArray *array = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error];
NSDictionary *resultDic1 = [array objectAtIndex:0];
resultDic2 = [resultDic1 objectForKey:@"result"];
NSString *str = [resultDic2 objectForKey:@"result"];
NSLog(@"str -%@",str);
if ([str isEqualToString:@"FAIL"] ) {
NSLog(@"shibai-%@",str);
// 定时器(设置时间为3秒)
[NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(logInFail) userInfo:nil repeats:NO];
}else{
self.homeURL = [resultDic2 objectForKey:@"RUrl"];
NSLog(@"url - %@",self.homeURL);
// 定时器(设置时间为3秒)
[NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(logInOK) userInfo:nil repeats:NO];
}
}
//登录失败
-(void)logInFail {
[activityIndicatorView stopAnimating];//结束动画
NSString *msg = [resultDic2 objectForKey:@"errMsg"];
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"登录失败" message:msg delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil nil];
[alert show];
[view1 removeFromSuperview];
}
//登录成功
-(void)logInOK{
跳转到首页就可以了
[activityIndicatorView stopAnimating];//结束动画
用户输入用户名和密码,点击登录。。。我们把用户名和密码(用post方式或者get方式,get方式多用于测试看你需要)传给服务器,服务器进行判断,然后返回一个接口给我们(这里服务器返回的json接口,正确就返回一个正确的接口给我们,错误就返回一个错误的接口给我们)。我们拿到接口去解析,判断是否登录成功做相应的操作。
关于json解析,可以网上找找资料先看看,我就只知道[]是数组,{}是字典,iOS有自带的json解析的。
以前一直说接口文档,接口什么,可自己从来都是模糊的,比如说一个类的接口,我就认为是这个类的方法。。可是,我的boss给我的登录接口的文档的时候,我才知道,哦,接口文档原来是这样子的呀。。嘻嘻。。。
[
{
"result": {
"RUrl": "http://localhost/pad_4078_B7DA_676D3FE52763",
"errMsg": "",
"result": "OK",
"sid": "B67D78_B7DA_676D3FE52763"
}
}
]
jsondata[0][‘result’].result:
OK,登录成功,打开RUrl
FAIL,登录失败,取:errMsg
(1)
#import <UIKit/UIKit.h>
#import "ByValueUrl.h"
@interface LogInViewController : UIViewController <UITextFieldDelegate>{
UIActivityIndicatorView *activityIndicatorView;
UITextField *userNameTF;//用户名
UITextField *passWordTF;//密码
NSDictionary *resultDic2;
UIView *view1;//等待转圈的view
}
@property (weak, nonatomic) IBOutlet UIButton *loginButton;//登录按钮
@property (strong,nonatomic) NSString *homeURL;//登录成功拿到的url
@end
(2)
- (IBAction)login:(id)sender {
[self initaAtivityIndicatorView];
[activityIndicatorView startAnimating];//开始动画
// 定时器(设置时间为3秒)
// [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(timerFired:) userInfo:nil repeats:NO];
//加载一个NSURL对象
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://192.168.9.1/pb/l?user=%@&pwd=%@",userNameTF.text,passWordTF.text]];//这里的url输入自己的就可以,这里用的get方式,get方式都是明文,用post方式好一点
NSLog(@"userNameTF:%@-",userNameTF.text);
NSLog(@"passWordTF:%@-",passWordTF.text);
NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url];
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; //将请求的url数据放到NSData对象中
NSString *dataStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"str-%@",dataStr);
//IOS5自带解析类NSJSONSerialization从response中解析出数据放到字典中
NSError *error;
NSMutableArray *array = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error];
NSDictionary *resultDic1 = [array objectAtIndex:0];
resultDic2 = [resultDic1 objectForKey:@"result"];
NSString *str = [resultDic2 objectForKey:@"result"];
NSLog(@"str -%@",str);
if ([str isEqualToString:@"FAIL"] ) {
NSLog(@"shibai-%@",str);
// 定时器(设置时间为3秒)
[NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(logInFail) userInfo:nil repeats:NO];
}else{
self.homeURL = [resultDic2 objectForKey:@"RUrl"];
NSLog(@"url - %@",self.homeURL);
// 定时器(设置时间为3秒)
[NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(logInOK) userInfo:nil repeats:NO];
}
}
//登录失败
-(void)logInFail {
[activityIndicatorView stopAnimating];//结束动画
NSString *msg = [resultDic2 objectForKey:@"errMsg"];
UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"登录失败" message:msg delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil nil];
[alert show];
[view1 removeFromSuperview];
}
//登录成功
-(void)logInOK{
跳转到首页就可以了
[activityIndicatorView stopAnimating];//结束动画
相关文章推荐
- iOS实现第三方微信登录方式实例解析(最新最全)
- iOS开发之第三方登录微信-- 史上最全最新第三方登录微信方式实现
- iOS开发之第三方登录微信-- 史上最全最新第三方登录微信方式实现
- iOS开发之第三方登录QQ -- 史上最全最新第三方登录QQ方式实现
- iOS开发之第三方登录QQ -- 史上最全最新第三方登录QQ方式实现
- iOS实现简书的登录验证方式(极验验证)
- iOS开发之第三方登录微博-- 史上最全最新第三方登录微博方式实现
- iOS开发之第三方登录QQ -- 史上最全最新第三方登录QQ方式实现
- iOS开发之第三方登录微博-- 史上最全最新第三方登录微博方式实现
- 两系统用asp.net forms 身份验证方式实现跨域登录信息共享
- Objective-C ,ios,iphone开发基础:使用第三方库FMDB连接sqlite3 数据库,实现简单的登录
- Sql Server 2005 怎么就不能用Windows身份验证方式登录呢?
- IOS项目集成ShareSDK实现第三方登录、分享、关注等功能。
- 数据解析(三)解析JSON-----系统自带NSJSONSerialization 与 第三方JSONKit
- Sql Server 2005 怎么就不能用Windows身份验证方式登录呢?
- 【Tech】单点登录系统CAS服务器端搭建及实现用户名密码由MYSQL数据库验证
- IOS项目集成ShareSDK实现第三方登录、分享、关注等功能。
- IOS项目集成ShareSDK实现第三方登录、分享、关注等功能。
- Objective-C ,ios,iphone开发基础:使用第三方库FMDB连接sqlite3 数据库,实现简单的登录
- 其他系统与domino系统单点登录的实现方式