iOS-登錄認證/json解析


用戶輸入用戶名和密碼,點擊登錄。。。我們把用戶名和密碼(用post方式或者get方式,get方式多用於測試看你需要)傳給服務器,服務器進行判斷,然后返回一個接口給我們(這里服務器返回的json接口,正確就返回一個正確的接口給我們,錯誤就返回一個錯誤的接口給我們)。我們拿到接口去解析,判斷是否登錄成功做相應的操作。

關於json解析,可以網上找找資料先看看,我就只知道[]是數組,{}是字典,iOS有自帶的json解析的。

以前一直說接口文檔,接口什么,可自己從來都是模糊的,比如說一個類的接口,我就認為是這個類的方法。。可是,我的boss給我的登錄接口的文檔的時候,我才知道,哦,接口文檔原來是這樣子的呀。。嘻嘻。。。吐舌頭

 
  1. [  
  2.     {  
  3.         "result": {  
  4.             "RUrl":   "http://localhost/pad_4078_B7DA_676D3FE52763",  
  5.             "errMsg""",  
  6.             "result""OK",  
  7.             "sid""B67D78_B7DA_676D3FE52763"  
  8.         }  
  9.     }  
  10. ]  
  11.   
  12.    jsondata[0][‘result’].result:  
  13.    OK,登錄成功,打開RUrl  
  14.    FAIL,登錄失敗,取:errMsg  

 

 

(1)

  1. #import <UIKit/UIKit.h>  
  2. #import "ByValueUrl.h"  
  3. @interface LogInViewController : UIViewController <UITextFieldDelegate>{  
  4.   
  5.     UIActivityIndicatorView *activityIndicatorView;  
  6.     UITextField *userNameTF;//用戶名  
  7.     UITextField *passWordTF;//密碼  
  8.     NSDictionary *resultDic2;  
  9.       
  10.     UIView *view1;//等待轉圈的view  
  11. }  
  12.   
  13.   
  14. @property (weak, nonatomic) IBOutlet UIButton *loginButton;//登錄按鈕  
  15. @property (strong,nonatomicNSString *homeURL;//登錄成功拿到的url  
  16.   
  17.   
  18. @end  


(2)

  1. - (IBAction)login:(id)sender {  
  2.       
  3.     [self initaAtivityIndicatorView];  
  4.     [activityIndicatorView startAnimating];//開始動畫  
  5.       
  6. //    定時器(設置時間為3秒)  
  7. //    [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(timerFired:) userInfo:nil repeats:NO];  
  8.       
  9.   //加載一個NSURL對象  
  10.     NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://192.168.9.1/pb/l?user=%@&pwd=%@",userNameTF.text,passWordTF.text]];//這里的url輸入自己的就可以,這里用的get方式,get方式都是明文,用post方式好一點  
  11.     NSLog(@"userNameTF:%@-",userNameTF.text);  
  12.     NSLog(@"passWordTF:%@-",passWordTF.text);  
  13.     NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url];  
  14.       
  15.     NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; //將請求的url數據放到NSData對象中  
  16.     NSString *dataStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];  
  17.     NSLog(@"str-%@",dataStr);  
  18.     
  19.      //IOS5自帶解析類NSJSONSerialization從response中解析出數據放到字典中  
  20.     NSError *error;  
  21.     NSMutableArray *array = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error];  
  22.     NSDictionary *resultDic1 = [array objectAtIndex:0];  
  23.     resultDic2 = [resultDic1 objectForKey:@"result"];  
  24.     NSString *str = [resultDic2 objectForKey:@"result"];  
  25.     NSLog(@"str -%@",str);  
  26.          
  27.     if ([str isEqualToString:@"FAIL"] ) {  
  28.         NSLog(@"shibai-%@",str);  
  29.         //    定時器(設置時間為3秒)  
  30.         [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(logInFail) userInfo:nil repeats:NO];  
  31.          
  32.     }else{  
  33.           
  34.         self.homeURL = [resultDic2 objectForKey:@"RUrl"];  
  35.   
  36.         NSLog(@"url - %@",self.homeURL);  
  37.           
  38.         //    定時器(設置時間為3秒)  
  39.         [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(logInOK) userInfo:nil repeats:NO];  
  40.           
  41.        
  42.           
  43.     }  
  44.       
  45.       
  46. }  
  47.   
  48. //登錄失敗  
  49. -(void)logInFail {  
  50.       
  51.     [activityIndicatorView stopAnimating];//結束動畫  
  52.       
  53.       
  54.     NSString *msg = [resultDic2 objectForKey:@"errMsg"];  
  55.     UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"登錄失敗" message:msg delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil nil];  
  56.     [alert show];  
  57.       
  58.     [view1 removeFromSuperview];  
  59.      
  60.   
  61. }  
  62.   
  63. //登錄成功  
  64. -(void)logInOK{  
 
  1. 跳轉到首頁就可以了  
 
    1. [activityIndicatorView stopAnimating];//結束動畫 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM