用户输入用户名和密码,点击登录。。。我们把用户名和密码(用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.    jsondata[0][‘result’].result:
  12.    OK,登录成功,打开RUrl
  13.    FAIL,登录失败,取:errMsg

(1)

  1. #import <UIKit/UIKit.h>
  2. #import "ByValueUrl.h"
  3. @interface LogInViewController : UIViewController <UITextFieldDelegate>{
  4. UIActivityIndicatorView *activityIndicatorView;
  5. UITextField *userNameTF;//用户名
  6. UITextField *passWordTF;//密码
  7. NSDictionary *resultDic2;
  8. UIView *view1;//等待转圈的view
  9. }
  10. @property (weak, nonatomic) IBOutlet UIButton *loginButton;//登录按钮
  11. @property (strong,nonatomic) NSString *homeURL;//登录成功拿到的url
  12. @end

(2)

  1. - (IBAction)login:(id)sender {
  2. [self initaAtivityIndicatorView];
  3. [activityIndicatorView startAnimating];//开始动画
  4. //    定时器(设置时间为3秒)
  5. //    [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(timerFired:) userInfo:nil repeats:NO];
  6. //加载一个NSURL对象
  7. NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"http://192.168.9.1/pb/l?user=%@&pwd=%@",userNameTF.text,passWordTF.text]];//这里的url输入自己的就可以,这里用的get方式,get方式都是明文,用post方式好一点
  8. NSLog(@"userNameTF:%@-",userNameTF.text);
  9. NSLog(@"passWordTF:%@-",passWordTF.text);
  10. NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url];
  11. NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; //将请求的url数据放到NSData对象中
  12. NSString *dataStr = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
  13. NSLog(@"str-%@",dataStr);
  14. //IOS5自带解析类NSJSONSerialization从response中解析出数据放到字典中
  15. NSError *error;
  16. NSMutableArray *array = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&error];
  17. NSDictionary *resultDic1 = [array objectAtIndex:0];
  18. resultDic2 = [resultDic1 objectForKey:@"result"];
  19. NSString *str = [resultDic2 objectForKey:@"result"];
  20. NSLog(@"str -%@",str);
  21. if ([str isEqualToString:@"FAIL"] ) {
  22. NSLog(@"shibai-%@",str);
  23. //    定时器(设置时间为3秒)
  24. [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(logInFail) userInfo:nil repeats:NO];
  25. }else{
  26. self.homeURL = [resultDic2 objectForKey:@"RUrl"];
  27. NSLog(@"url - %@",self.homeURL);
  28. //    定时器(设置时间为3秒)
  29. [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(logInOK) userInfo:nil repeats:NO];
  30. }
  31. }
  32. //登录失败
  33. -(void)logInFail {
  34. [activityIndicatorView stopAnimating];//结束动画
  35. NSString *msg = [resultDic2 objectForKey:@"errMsg"];
  36. UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"登录失败" message:msg delegate:self cancelButtonTitle:@"OK" otherButtonTitles: nil nil];
  37. [alert show];
  38. [view1 removeFromSuperview];
  39. }
  40. //登录成功
  41. -(void)logInOK{
  1. 跳转到首页就可以了
    1. [activityIndicatorView stopAnimating];//结束动画

iOS-登录认证/json解析的更多相关文章

  1. iOS开发系列-JSON解析

    概述 JOSN是一种轻量级的数据格式,一般用于数据交互.服务器返回给客户端,一般都是JSON格式或者XML格式. JSON的格式: {"name" : "CoderHon ...

  2. iOS开发之JSON解析

    JSON解析步骤: - (NSArray *)products { if (_products == nil) { //第一步:获取JSON文件的路径: NSString *path = [[NSBu ...

  3. iOS 后台返回json解析出现的null的解决办法

    在后台返回值为Null为空时,我们代码没有判断时,程序就会崩溃.当时一直很疑惑是为啥,后来发现是数据问题,由于服务器的数据库中有些字段为空,然后以Json形式返回给客户端时就会出现这样的数据.当我们通 ...

  4. IOS自带json解析类解析json

    - (IBAction)test:(id)sender { NSString *result = @"{\"code\":\"S00000\",\&q ...

  5. iOS SDK原生JSON解析

    - (IBAction)touchReadButton:(id)sender { NSData *jsonData = [[NSData alloc] initWithContentsOfFile:J ...

  6. iOS中处理json解析出现的null,nil的解决办法

    最开始是使用的一个函数进行处理,代码如下: - (id) setNoNull:(id)aValue{ if (aValue == nil) { aValue = @"";//为nu ...

  7. 巨蟒python全栈开发django10:ajax&&登录认证

    通过题目进行知识点回顾: 聚合查询 From django.db.models import Avg,Min,Max,F,Q,Count,Sum #查询书籍的平均值 Ret= Models.Book. ...

  8. 接口测试入门(3)--使用httpClient进行登录用例操作/set-cookies验证/ List<NameValuePair>设置post参数/json解析

    (最近学的都是很基础的接口测试,都是基于UI界面可见的接口,就是发请求,接收响应,分析返回的结果,校验,对共通模块进行封装,仅此而已,其实做自动化的思路基本都是如此,UI也是.) 现在开始用httpC ...

  9. 混合应用 微信登录授权 微信登录认证失败 ios PGWXAPI错误-1 code:-100 / 安卓 message:invalid appsecret innerCode:40125

    最近项目需要做微信登录,于是利用HTML5+ API Reference的OAuth模块管理客户端的用户登录授权验证功能,允许应用访问第三方平台的资源.(链接:https://www.dcloud.i ...

随机推荐

  1. Flash: Event.PASTE Flash获取剪贴板内容 触发paste事件 how to get paste event

    actionscript把文字存放到剪贴板这个就非常简单了,一般网站做点击复制基本都是这么做的. 但是,基本没有人做flash粘贴内容.今天本来想尝试一下,通过flash实现网页编辑器粘贴图片,但貌似 ...

  2. MUI(拍照+系统相册)图片上传剪切预览

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  3. django 文件上传 研究

    http://python.usyiyi.cn/django/index.html http://python.usyiyi.cn/django/topics/http/file-uploads.ht ...

  4. android自动化测试--appium运行的坑问题及解决方法

    问题 1. error: Failed to start an Appium session, err was: Error: Requested a new session but one was ...

  5. Python yield 使用

    老是看到好的文章,不由自主的收集过来. 原文链接:https://www.ibm.com/developerworks/cn/opensource/os-cn-python-yield/ 廖大写的, ...

  6. Ubuntu18.04使用adb和tcpdump对android设备进行网络调试

    准备工作 1. Android设备需要root 2. 在 https://www.androidtcpdump.com/ 下载适用于Android的tcpdump可执行文件 3. 本地安装 andro ...

  7. 基于Echarts的股票K线图展示

    发布时间:2018-10-31   技术:javascript+html5+canvas   概述 基于echarts的股票K线图展示,只需引用单个插件,通过简单配置,导入数据,即可实现炫酷复杂的K线 ...

  8. Easyui + asp.net MVC 系列教程 第19-23 节 完成注销 登录限制过滤 添加用户

    前面视频 文章地址 Easyui + asp.net MVC 系列教程 第09-17 节 完成登录 高清录制  Easyui + asp.net mvc + sqlite 开发教程(录屏)适合入门  ...

  9. 【RS】Local Latent Space Models for Top- N Recommendation-利用局部隐含空间模型进行Top-N推荐

    [论文标题]Local Latent Space Models for Top- N Recommendation  (KDD-2018 ) [论文作者]—Evangelia Christakopou ...

  10. POJ 2337 Catenyms (欧拉回路)

    Catenyms Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8173   Accepted: 2149 Descript ...