zoukankan      html  css  js  c++  java
  • JSON数据解析1

    通过火狐浏览器查看服务器上的JSON格式的数据,

    通过请求拿到JSON数据(即data)进行解析,

    使用了第三方框架,做了简单封装

    注意点:38行路径不要拼接错误,

              系统默认发送GET请求

        程序访问的是本地搭建的服务器

       Xcode默认不是HTTP协议,需要在info.plist中添加这段代码

    <key>NSAppTransportSecurity</key>
    <dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    </dict>

             53行发送请求,等待响应为耗时操作需要在后台线程执行,拿到数据解析,打印要回到主线程.

     

     1 //
     2 //  ViewController.m
     3 //  LDlate发送请求
     4 //
     5 //  Created by apple on 15/11/5.
     6 //  Copyright © 2015年 itcast. All rights reserved.
     7 //
     8 
     9 #import "ViewController.h"
    10 #import "MBProgressHUD+LD.h"
    11 @interface ViewController ()
    12 @property (weak, nonatomic) IBOutlet UITextField *userName;
    13 @property (weak, nonatomic) IBOutlet UITextField *pwd;
    14 
    15 @end
    16 
    17 @implementation ViewController
    18 - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    19     //点击登录退出键盘
    20     [self.view endEditing:YES];
    21 }
    22 - (IBAction)logIn:(id)sender {
    23     //1.用户名
    24     NSString * userNameText = self.userName.text;
    25     
    26     if (userNameText.length == 0) {
    27         [MBProgressHUD showError:@"请输入用户名"];
    28         return;
    29     }
    30     //2.密码
    31     NSString * pwdText = self.pwd.text;
    32     if (pwdText.length == 0) {
    33         [MBProgressHUD showError:@"请输入密码"];
    34         return;
    35     }
    36     //3发送用户名和密码给服务器(HTTP协议,非HTTPS)
    37     //创建Url:请求路径
    38     NSString * urlStr = [NSString stringWithFormat:@"http://localhost/login/login.php?username=%@&password=%@",self.userName.text,self.pwd.text];
    39     NSLog(@"urlStr = %@",urlStr);
    40     //url中不能包含中文,如包含中文需要进行转码,URL 不能包含 ASCII 字符集中
    41     urlStr = [urlStr stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
    42     NSLog(@"urlStr = %@",urlStr);
    43     
    44     NSURL * url = [NSURL URLWithString:urlStr];
    45     
    46     NSLog(@"url = %@",url);
    47     
    48     //创建请求
    49     NSURLRequest * request = [NSURLRequest requestWithURL:url];
    50     
    51     //异步请求(子线程发送请求),主线程处理任务(更新UI)
    52     NSOperationQueue *queue = [NSOperationQueue mainQueue];
    53     [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:
    54      ^(NSURLResponse *response, NSData *data, NSError *connectionError) {
    55          // 这个block会在请求完毕的时候自动调用
    56          if (connectionError || data == nil) {
    57              [MBProgressHUD showError:@"请求失败"];
    58              return;
    59          }
    60          
    61          // 解析服务器返回的JSON数据
    62          NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
    63          NSLog(@"%@",dict);
    64          NSString *error = dict[@"error"];
    65          if (error) {
    66              // {"error":"用户名不存在"}
    67              // {"error":"密码不正确"}
    68              [MBProgressHUD showError:error];
    69          } else {
    70              // {"success":"登录成功"}
    71              NSString *success = dict[@"success"];
    72              [MBProgressHUD showSuccess:success];
    73          }
    74      }];
    75 }
    76 
    77 - (void)viewDidLoad {
    78     [super viewDidLoad];
    79     // Do any additional setup after loading the view, typically from a nib.
    80 }
    81 @end

  • 相关阅读:
    2.22
    LG P7077 函数调用
    2020/10/30 模拟赛 序列
    2020/10/27 模拟赛 数列
    2020/10/23 模拟赛 chip
    2020/10/23 模拟赛 escape
    2020/10/23 模拟赛 center
    LOJ#6581. 「ICPC World Finals 2019」断头路探测者
    LG P1587 [NOI2016]循环之美
    LG P4156 [WC2016]论战捆竹竿
  • 原文地址:https://www.cnblogs.com/LDSmallCat/p/4942354.html
Copyright © 2011-2022 走看看