您的位置:首页 > 移动开发 > IOS开发

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];//结束动画
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐