本文介绍: [iOS开发]网络请求之—GET和POSTGET和POST的区别字面意思来看,GET是向服务器发索取数据的一种请求,而Post是向服务提交数据的一种请求GET是获取信息,而不是修改信息,类似数据库查询功能一样,数据不会被修改GET请求的参数会跟在url后进行传递,请求的数据会附在URL之后,以?分割URL和传输数据参数之间以&相连,%XX中的XX为该符号以16进制表示的ASCII,如果数据英文字母/数字,原样发送,如果是空格转换为+,如果是中文/其他字符,则直接字符串用BASE

[iOS开发]网络请求之—GET和POST

GET和POST的区别

  1. 字面意思来看,GET是向服务器发索取数据的一种请求,而Post是向服务提交数据的一种请求
  2. GET是获取信息,而不是修改信息,类似数据库查询功能一样,数据不会被修改
  3. GET请求的参数会跟在url后进行传递,请求的数据会附在URL之后,以?分割URL和传输数据参数之间以&相连,%XX中的XX为该符号以16进制表示的ASCII,如果数据是英文字母/数字,原样发送,如果是空格转换为+,如果是中文/其他字符,则直接字符串用BASE64加密
  4. GET传输的数据有大小限制,因为GET是通过URL提交数据,那么GET可提交数据量就跟URL的长度直接关系了,不同浏览器对URL的长度限制不同的。
  5. GET请求的数据会被浏览器缓存起来,用户名密码将明文出现在URL上,其他人可以查到历史浏览记录,数据不太安全。Post请求则作为http消息的实际内容发送给web服务器,数据放置在HTML Header提交,Post没有限制提交的数据。
  6. POST请求操作相对复杂需要参数地址分开,不过安全性高,参数放在body里面,不易被捕获。当数据是中文或者不敏感的数据,则用GET,因为使用GET,参数显示地址,对于敏感数据和不是中文字符的数据,则用POST,POST表示可能修改变服务器上的资源的请求。

GET请求使用方法

使用NSURLSession发送GET请求的方法和NSURLConnection类似,整个过程如下

  1. 确定请求路径(一般由公司后台开发人员接口文档方式提供),GET请求参数直接跟在URL后面
  2. 创建请求对象默认包含了请求头和请求方法【GET】),此步骤可以省略
  3. 创建会话对象(NSURLSession
  4. 根据会话对象创建请求任务(NSURLSessionDataTask
  5. 执行Task
  6. 当得到服务器返回响应后,解析数据(XML|JSON|HTTP)

方法一:

   //对请求路径的说明
    //http://120.25.226.186:32812/login?username=520it&pwd=520&type=JSON
    //协议头+主机地址+接口名称+?+参数1&参数2&参数3
    //协议头(http://)+主机地址(120.25.226.186:32812)+接口名称(login)+?+参数1(username=520it)&参数2(pwd=520)&参数3(type=JSON)
    //GET请求,直接把请求参数跟在URL的后面以?隔开,多个参数之间以&符号拼接
    
    //1.确定请求路径
    NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/login?username=520it&pwd=520it&type=JSON"];
    
    //2.创建请求对象
    //请求对象内部默认已经包含了请求头和请求方法(GET)
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    
    //3.获得会话对象
    NSURLSession *session = [NSURLSession sharedSession];
      
    //4.根据会话对象创建一个Task(发送请求)
    /*
     第一个参数:请求对象
     第二个参数:completionHandler回调(请求完成成功|失败】的回调data响应信息期望的数据)
               response响应头信息,主要是对服务器端描述
               error错误信息,如果请求失败,则error有值
     */
    NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        
        if (error == nil) {
            //6.解析服务器返回的数据
            //说明:(此处返回的数据是JSON格式的,因此使用NSJSONSerialization进行反序列化处理
            NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
            
            NSLog(@"%@",dict);
        }
    }];
    
    //5.执行任务
    [dataTask resume];

方法二:

//1.确定请求路径
    NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/login?username=520it&pwd=520it&type=JSON"];
    
    //2.获得会话对象
    NSURLSession *session = [NSURLSession sharedSession];
    
    //3.根据会话对象创建一个Task(发送请求)
    /*
     第一个参数:请求路径
     第二个参数:completionHandler回调(请求完成成功|失败】的回调)
               data:响应体信息(期望的数据)
               response响应头信息,主要是对服务器端描述
               error:错误信息,如果请求失败,则error有值
     注意:
        1)该方法内部自动将请求路径包装一个请求对象,该请求对象默认包含了请求头信息和请求方法(GET)
        2)如果要发送的是POST请求,则不能使用该方法
     */
    NSURLSessionDataTask *dataTask = [session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        
        //5.解析数据
        NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
        NSLog(@"%@",dict);
        
    }];
    
    //4.执行任务
    [dataTask resume];
}

POST请求使用方法

使用NSURLSession发送POST请求的方法和NSURLConnection类似,整个过程如下

  1. 确定请求路径(一般由公司后台开发人员接口文档的方式提供)
  2. 创建可变的请求对象(因为需要修改),此步骤可以省略
  3. 修改请求方法为POST
  4. 设置请求体,把参数转换为二进制数据并设置请求体
  5. 创建会话对象(NSURLSession)
  6. 根据会话对象创建请求任务(NSURLSessionDataTask)
  7. 执行Task
  8. 当得到服务器返回响应后,解析数据(XML|JSON|HTTP)
 //对请求路径的说明
    //http://120.25.226.186:32812/login
    //协议头+主机地址+接口名称
    //协议头(http://)+主机地址(120.25.226.186:32812)+接口名称(login)
    //POST请求需要修改请求方法为POST,并把参数转换为二进制数据设置为请求体
    
    //1.创建会话对象
    NSURLSession *session = [NSURLSession sharedSession];
    
    //2.确立请求路径
    NSURL *url = [NSURL URLWithString:@"http://120.25.226.186:32812/login"];
    
    //3.创建可变的请求对象
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
    
    //4.修改请求方法为POST,若不修改则默认为GET
    request.HTTPMethod = @"POST";
    
    //5.设置请求体
    request.HTTPBody = [@"username=520it&pwd=520it&type=JSON" dataUsingEncoding:NSUTF8StringEncoding];
    
    //6.根据会话对象创建一个Task(发送请求)
    /*
     第一个参数:请求对象
     第二个参数:completionHandler回调(请求完成成功|失败】的回调)
                data:响应体信息(期望的数据)
                response:响应头信息,主要是对服务器端描述
                error:错误信息,如果请求失败,则error有值
     */
    NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        
        //8.解析数据
        NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
        NSLog(@"%@",dict);
        
    }];
    
    //7.执行任务
    [dataTask resume];

原文地址:https://blog.csdn.net/weixin_51638861/article/details/123693689

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

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

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

发表回复

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