NSURLSession的GET和POST请求基本使用

所以在此介绍如何使用NSURLSession来发送GET请求和POST请求。

后续又将其封装起来,方便以后可以通过一个方法实现所有过程!!

使用步骤:

    1)确定请求路径

    2)创建请求对象(POST请求需要修改请求方法和设置请求体)

    3)创建会话对象(NSURLSession)

    4)根据会话对象创建请求任务(NSURLSessionDataTask)

    5)执行Task

    6)当得到服务器返回的响应后,解析数据

GET请求代码:

 

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { /* 登录接口说明: 是一个登陆接口,若传入的参数正确 则返回{"userId":1,"userName":"zhangsan"}的JSON数据 */ //GET请求将参数拼接在 url 后面 //网络接口 和 参数 以 ? 分隔. 参数和参数之间以 & 符号分隔.注意删除最后一个 & 符号. //如:?username=zhangsan&password=zhang // NSUrlSession 的使用步骤: // 1.实例化网络会话. NSURLSession *session = [NSURLSession sharedSession]; // 2.根据网络会话,实例化网络任务. // 网络任务: 三种: 普通/上传/下载 // NSURLSessionDataTask :普通网络任务. // 如果是GET 请求,可以直接根据 url 实例化网络任务. NSURL *url = [NSURL URLWithString:@"?username=zhangsan&password=zhang"]; /* 第一个参数:请求路径:内部会自动将路径包装成请求对象 第二个参数:completionHandler回调(请求完成【成功|失败】的回调) data:响应体信息(期望的数据) response:响应头信息,主要是对服务器端的描述 error:错误信息,如果请求失败,则error有值 */ NSURLSessionDataTask *task = [session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { // 默认是子线程. NSLog(@"%@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]); }]; // 3.开启网络任务. [task resume]; }

GET请求代码

POST请求代码:

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { /* 登录接口说明: 是一个登陆接口,若传入的参数正确 则返回{"userId":1,"userName":"zhangsan"}的JSON数据 */ //注意:POST请求将参数添加在请求体中 // NSUrlSession 的使用步骤: // 1.实例化网络会话. NSURLSession *session = [NSURLSession sharedSession]; // 2.根据网络会话,实例化网络任务. NSURL *url = [NSURL URLWithString:@""]; //3.创建可变请求对象 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; //4.设置请求体 request.HTTPBody = [@"username=zhangsan&password=zhang" dataUsingEncoding:NSUTF8StringEncoding]; //5..设置请求方法: request.HTTPMethod = @"POST"; /* 第一个参数:请求对象 第二个参数:completionHandler回调(请求完成【成功|失败】的回调) data:响应体信息(期望的数据) response:响应头信息,主要是对服务器端的描述 error:错误信息,如果请求失败,则error有值 */ NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) { // 默认是子线程. NSLog(@"%@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]); }]; // 3.开启网络任务. [task resume]; }

POST请求代码

代码执行结果:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/a7feec9887e733e84cdaec9000120aca.html