用戶輸入用戶名和密碼,點擊登錄。。。我們把用戶名和密碼(用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];//結束動畫