网络数据请求解析

我们获取到接口URL之后我们要对数据进行解析,这是会有两种解析方式 如图:
这里写图片描述
那么GET请求和POST请求有什么区别呢?
1.给服务器传输数据的方式不同:
GET:通过网址字符串.
POST:通过data
2.传输数据的大小:
GET:网址字符串最多255字节.
POST:使用NSData,容量超过1G
3.安全性:
GET:所有传输给服务的数据,显示在网址里,类似于密码的明文输入,直接可见.
POST:数据被转成NSData(二进制数据),类似于密码的密文输入,无法直接读取.
所以,我们大部分数据请求都是用POST的请求
下面是一个大体的请求步骤
这里写图片描述
在iOS7.0之前都是用NSURLConnection来解析数据 在7.0之后系统弃用,使用NSURLSession方法来写。但是方法步骤都是大同小异,这里重点说一下NSURLSession;
POST请求的代码

// 1.创建url
    NSURL *url = [NSURL URLWithString:POST_URL];
    // 2.创建请求
    NSMutableURLRequest *mutableRequest = [NSMutableURLRequest requestWithURL:url];
    // 3.设置body
    NSString *body = POST_BODY;
    NSData *data = [body dataUsingEncoding:NSUTF8StringEncoding];
    mutableRequest.HTTPMethod = @"POST";
    mutableRequest.HTTPBody = data;
    // 4.创建session对象
    NSURLSession *session = [NSURLSession sharedSession];
    // 5.创建task
    NSURLSessionDataTask *task = [session dataTaskWithRequest:mutableRequest completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        if (error == nil) {
            NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
            NSLog(@"%@", dict);
        }
    }];

    // 6.启动
    [task resume];

如果是GET请求的代码就更加的简单

// 方式一:使用block实现
    // 1.创建url
    NSURL *url = [NSURL URLWithString:GET_URL];
    // 2.创建session对象
    NSURLSession *session = [NSURLSession sharedSession];
    // 3.创建task请求任务
    // NSURLSession是基于任务去完成相关的事件的
    // NSURLSessionTask所有的任务均放在这个里边实现
    NSURLSessionDataTask *task = [session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        // 4.解析相关的数据
        if (error == nil) {
            NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
            NSLog(@"%@", dict);
        }
    }];

    // 5.核心步:启动任务【记住】
    // 原因:NSURLSessionTask实例出来的任务处于挂起状态,如果不启动,不会走block中的实现内容
    [task resume];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值