网络数据请求

来源:互联网 发布:运营商网络攻击 编辑:程序博客网 时间:2024/04/30 10:09

    在做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中包含有病毒,对服务器对威胁是巨大的。所以安全性的问题就仁者见仁智者见智吧。

0 0
原创粉丝点击