网络数据请求

    在做iOS开发过程中很重要的一项工作就是对网络数据进行下载和解析,虽然有很多相关的第三方能够很好的完成这些工作,但对开发者而言,能够了解整个网络请求的流程能够帮助我们更好的对数据进行操作。

    首先介绍一下两种网络请求方式。

一、GET和POST请求

    先看一个网址:“http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx?date=20131129&startRecord=1&len=5&udid=1234567890&terminalType=Iphone&cid=213”;

    上面的网址可以被?分为两部分,当使用GET请求方式时,输入上面全部内容获取数据;当使用POST请求方式时,用?的前半部分作为URL,后半部分作为BODY。至于两种请求方式的区别,我们以后再说,这里只单纯的讲使用方法。

二、GET和POST请求方式的使用

    先写GET请求的方式:

    //1.创建URL
    NSURL *url = [NSURL URLWithString:@"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx?date=20131129&startRecord=1&len=5&udid=1234567890&terminalType=Iphone&cid=213"];
    //2.创建会话session
    NSURLSession *session = [NSURLSession sharedSession];
    //3.创建task(内部处理了请求,默认就是GET,直接传URL就行)。
    NSURLSessionDataTask *dataTask = [session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        NSLog(@"%@",data);
        NSLog(@"%ld",error.code)
    }];
    //4.启动任务
    [dataTask resume];
    再看POST请求的方式:
    //    1.创建URL
    NSURL *url = [NSURL URLWithString:@"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx"];
    
    //     2.创建请求对象
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    
    //     3.设置请求方式
    [request setHTTPMethod:@"POST"];
    
    //   4. 设置请求的内容
    NSData *bodyData = [@"date=20131129&startRecord=1&len=5&udid=1234567890&terminalType=Iphone&cid=213" dataUsingEncoding:NSUTF8StringEncoding];
    [request setHTTPBody:bodyData];
    //   5. 创建会话
    NSURLSession *session = [NSURLSession sharedSession];
    
    //    6.创建task
    NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        NSLog(@"%@",data);
        NSLog(@"%ld",error.code)
    }];
    //    7.开始任务
    [dataTask resume];
    这样网络请求的任务就创建成功了,需要注意的是由于系统默认的网络请求方式是GET,所以当使用POST请求方式时,需要使用上面的第三部,否则失败。

    以上均为异步请求方式,由于同步请求会导致APP所有功能暂时停用,用户体验不好,使用的地方不多,所以本文不做介绍

三、两种请求方式的差异

    GET请求直接将请求的参数写在地址里,使用起来非常简单,而且请求的地址有限,最多只有255个字节。

    POST请求将地址和请求参数分开,所以body可以做的比较大一些,最多多少还没有试过,但绝对够用。有人说POST请求的安全性要比GET方式高,我并不这么认为。因为POST请求的body可以加密,当body在服务器解密后才可以读取,这时如果body中包含有病毒,对服务器对威胁是巨大的。所以安全性的问题就仁者见仁智者见智吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值