我们获取到接口URL之后我们要对数据进行解析,这是会有两种解析方式 如图:
那么GET请求和POST请求有什么区别呢?
1.给服务器传输数据的方式不同:
GET:通过网址字符串.
POST:通过data
2.传输数据的大小:
GET:网址字符串最多255字节.
POST:使用NSData,容量超过1G
3.安全性:
GET:所有传输给服务的数据,显示在网址里,类似于密码的明文输入,直接可见.
POST:数据被转成NSData(二进制数据),类似于密码的密文输入,无法直接读取.
所以,我们大部分数据请求都是用POST的请求
下面是一个大体的请求步骤
在iOS7.0之前都是用NSURLConnection来解析数据 在7.0之后系统弃用,使用NSURLSession方法来写。但是方法步骤都是大同小异,这里重点说一下NSURLSession;
POST请求的代码
// 1.创建url
NSURL *url = [NSURL URLWithString:POST_URL];
// 2.创建请求
NSMutableURLRequest *mutableRequest = [NSMutableURLRequest requestWithURL:url];
// 3.设置body
NSString *body = POST_BODY;
NSData *data = [body dataUsingEncoding:NSUTF8StringEncoding];
mutableRequest.HTTPMethod = @"POST";
mutableRequest.HTTPBody = data;
// 4.创建session对象
NSURLSession *session = [NSURLSession sharedSession];
// 5.创建task
NSURLSessionDataTask *task = [session dataTaskWithRequest:mutableRequest completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
if (error == nil) {
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
NSLog(@"%@", dict);
}
}];
// 6.启动
[task resume];
如果是GET请求的代码就更加的简单
// 方式一:使用block实现
// 1.创建url
NSURL *url = [NSURL URLWithString:GET_URL];
// 2.创建session对象
NSURLSession *session = [NSURLSession sharedSession];
// 3.创建task请求任务
// NSURLSession是基于任务去完成相关的事件的
// NSURLSessionTask所有的任务均放在这个里边实现
NSURLSessionDataTask *task = [session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
// 4.解析相关的数据
if (error == nil) {
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
NSLog(@"%@", dict);
}
}];
// 5.核心步:启动任务【记住】
// 原因:NSURLSessionTask实例出来的任务处于挂起状态,如果不启动,不会走block中的实现内容
[task resume];