本文介绍: 我们使用网络请求获取数据的时候应该get有一定的理解,顾名思义get是从服务器获取数据post是向服务器传送数据。前者把参数数据加在了将参数直接写在访问路径上。操作简单,不过容易被外界看到安全性不高,地址最多255字节,后者则是将参数放到body里面。POST请求操作相对复杂需要参数地址分开,不过安全性高,参数放在body里面,不易被捕获。下面就来浅谈一下。一、浅谈概念HTTP定义了与服务器交互的不同方法,最基本方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源

我们使用网络请求获取数据的时候应该对get有一定的理解,顾名思义get是从服务器获取数据post是向服务器传送数据。前者把参数数据加在了将参数直接写在访问路径上。操作简单,不过容易被外界看到安全性不高,地址最多255字节,后者则是将参数放到body里面。POST请求操作相对复杂需要参数地址分开,不过安全性高,参数放在body里面,不易被捕获。下面就来浅谈一下。

一、浅谈概念

HTTP定义了与服务器交互的不同方法,最基本方法有4种,分别是GETPOSTPUTDELETEURL全称是资源描述符我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GETPOSTPUTDELETE对应着对这个资源 4个操作。到这里大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息个人认为这是GET和POST的本质区别,也是协议设计者的本意,其它区别都是具体表现形式的差异 。

1.getpost区别

1.GET使用URL或Cookie传参。而POST将数据放在BODY中。
2.GET的URL会有长度上的限制,则POST的数据则可以非常大。
3.POST比GET安全,因为数据在地址栏上不可见。

对于get方式服务器端用Request.QueryString获取变量的值,对于post方式服务器端用Request.Form获取提交的数据。get方式传送的数据量较小,post传输数据量较大,一般被默认是不受限制的,但是理论上还是有限制的,URL长了,对服务处理也是一种负担。

二、GET

    //1.创建URL对象
    NSURL *url = [NSURL URLWithString:@"你要获取的地址"];
    //2.建立会话 session支持三种类型任务
    //    NSURLSessionDataTask  //加载数据
    //    NSURLSessionDownloadTask  //下载
    //    NSURLSessionUploadTask   //上传
    NSURLSession *session = [NSURLSession sharedSession];
    //3.创建请求任务,(该方法内部默认使用get)直接进行传递url即可
    NSURLSessionDataTask *dataTask = [session dataTaskWithURL:@"你刚才的URL" completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        //data就是你获取到的数据,你可以自行对其进行解析
        //error就是获取失败时出现的问题
    }];
    //4.启动任务
    [dataTask resume];

get使用起来非常简单,仅仅四行代码就能获取大量的信息,但是它仅仅在获取信息的时候好用,你若是想传递信息到服务器,那还是别用get的好,它传递信息无非就是通过URL进行传递,明眼人就能想到,这不就一下把数据泄漏完了,所以get的保密性和安全性都不高,而且URL通常也是有限度的,太长的话会影响后台解析

三、POST

    //1.创建URL对象
    NSURL *url = [NSURL URLWithString:@"你要获取的地址"];
    //2.创建请求对象
    //第一个参数是你的URL
    //第二个参数是请求缓存策略
    //第三个参数是设置请求超时时间
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:10];
    //3.设置请求方法为post
    [request setHTTPMethod:@"POST"];
    //4.设置请求信息
    //key(头字段名(不区分大小写)):Content-Type,
    //Value(头字段值)为下面三种:(还是得根据后台给的来设置)
    //application/x-www-form-urlencoded后台接收为分开的参数时,如?name=liyu&password=123)
    //application/json后台接收json对象时)
    //multipart/form-data(上传文件时)
    [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
    //5.设置请求体
    NSString *param = [NSString stringWithFormat:@"username = %@ & pwd = %@", self.username.text, self.pwd.text];
    //把拼接后的字符串转换data,设置请求体(这个data就是请求体)
    request.HTTPBody = [param dataUsingEncoding:NSUTF8StringEncoding];
    //6.建立会话 session支持三种类型的任务
    //    NSURLSessionDataTask  //加载数据
    //    NSURLSessionDownloadTask  //下载
    //    NSURLSessionUploadTask   //上传
    NSURLSession *session = [NSURLSession sharedSession];
    //7.创建请求任务
    NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        //data就是你获取到的数据,你可以自行对其进行解析
        //error就是获取失败时出现的问题
    }];
    //8.启动任务
    [dataTask resume];

使用post请求虽然代码比较多,但是它比较安全

四、小总结

从上边两个不难看出两个区别,无非就是post多了一个请求体,其他的也没什么区别,但是post的好处还有很多,首先它的保密性和安全性比较高,所以以后我们还是尽量多使用post请求数据的好,另外上述说的仅仅只是使用系统自带方法的代码,当然你也可以使用第三方库,比如AFNetworking它使用起来就更加方便。

原文地址:https://blog.csdn.net/m0_55124878/article/details/123651842

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_21520.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注