#import "ViewController.h"
#import "Header.h"
@interface ViewController () <NSURLConnectionDataDelegate>
/**
* 用来存储数据
*/
@property (nonatomic, strong) NSMutableData *resultData;
@property (nonatomic, strong) NSMutableArray *dataArray;
@end
@implementation ViewController
// 懒加载
- (NSMutableArray *)dataArray {
if (!_dataArray) {
_dataArray = [NSMutableArray array];
}
return _dataArray;
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
#pragma mark - 同步get请求
- (IBAction)getSynchronousRequest:(UIButton *)sender {
// 1.创建URL
NSURL *url = [NSURL URLWithString:GET_URL];
// 2.根据url创建具体的请求(使用缓存策略)
// 第一个参数:统一资源定位符URL
// 第二个参数:缓存的策略(枚举值)
/*
NSURLRequestUseProtocolCachePolicy//(基础策略)
NSURLRequestReloadIgnoringLocalCacheData//(忽略本地缓存)
NSURLRequestReturnCacheDataElseLoad//(首先使用缓存,如果没有本地缓存,才从原地址下载)
NSURLRequestReturnCacheDataDontLoad//(使用本地缓存,从不下载,如果本地没有缓存,则请求失败,此策略多用于离线操作)
NSURLRequestReloadIgnoringLocalAndRemoteCacheData//(无视任何缓存策略,无论是本地的还是远程的,总是从原地址重新下载)
NSURLRequestReloadRevalidatingCacheData//(如果本地缓存是有效的则不下载,其他任何情况都从原地址重新下载)
*/
// 第三个参数:设置延迟时间,如果超时请求终止
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:];
// 3.链接服务器【NSURLConnection在iOS9之后被弃用,在以后的开发中很少见】
// 参数1:请求对象
// 参数2:存储一些网络的请求信息【一般为包体,一般设置为nil】
// 参数3:错误信息
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
// 4.进行json数据解析
NSDictionary *resultDic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
NSLog(@"%@", resultDic);
}
#pragma mark - 同步post请求
- (IBAction)postSynchronousRequest:(UIButton *)sender {
// 1.创建url
NSURL *url = [NSURL URLWithString:POST_URL];
// 2.创建网路请求【post请求必须初始化为可变请求,因为稍后要进行一些内容的设置】
NSMutableURLRequest *mutableRequest = [NSMutableURLRequest requestWithURL:url];
// 2.5.设置body
// 创建一个连接字符串(这个内容在以后的开发中接口文档都有标注)
NSString *dataStr = POST_BODY;
// 对连接字符串进行编码【这一步千万不能忘记】
NSData *postData = [dataStr dataUsingEncoding:NSUTF8StringEncoding];
// 设置请求格式为post请求【在这里POST必须大写】
[mutableRequest setHTTPMethod:@"POST"];
// 设置请求体(body)
[mutableRequest setHTTPBody:postData];
// 3.链接服务器
NSData *data = [NSURLConnection sendSynchronousRequest:mutableRequest returningResponse:nil error:nil];
// 4.解析数据
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];
NSLog(@"%@", dic);
}
@end