首先, 要想实现网络访问, 必须在工程中的info.plist文件里添加:
网络请求,允许 Http 请求Step1:
NSAppTransportSecurity 类型 Dictionary 下添加
NSAllowsArbitraryLoads 类型 Boolean ,值设为 YES
1. 同步GET
- (void)getTB{
//第一步: 创建URL(使用NSURL对象)
NSURL *url = [NSURL URLWithString:GET_URL];
//第二步: 根据URL创建具体的请求方式
//参数一: 接口
//参数二: 缓存策略
// NSURLRequestUseProtocolCachePolicy(基础策略):默认缓存策略, 如果本地缓存不存在, 直接从服务器获取数据.
// NSURLRequestReloadIgnoringLocalCacheData: 忽略本地缓存, 直接从服务器获取。
// NSURLRequestReturnCacheDataElseLoad: 优先加载本地缓存数据, 若没有本地缓存, 才会去原地址下载
// NSURLRequestReturnCacheDataDontLoad: 优先加载本地缓存数据, 若没有本地缓存, 也不会从服务器获取(导致请求失败), 一般用于: 离线操作
//参数三: 设置一个延时时间, 如果超过改时间, 那么请求终止, 就是所谓的连接超时, 单位:秒
NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:(NSURLRequestUseProtocolCachePolicy) timeoutInterval:30];
//第三步: 接收网络数据(使用NSData对象)
//参数一: 请求对象(NSURLRequest)
//参数二: 存储一些网络请求的信息
//参数三: 错误信息
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
//第四步: 解析数据
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSLog(@"GET同步 = %@", dic);
}```
####2. 同步POST
```code
- (void)postTB{
//第一步:创建URL
NSURL *url = [NSURL URLWithString:POST_URL];
//第二步:创建网络请求(POST请求, 必须初始化为可变请求)
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
//第三步:设置body
//1. 设置body
NSString *bodyStr = POST_BODY;
NSData *bodyData = [bodyStr dataUsingEncoding:NSUTF8StringEncoding];
[request setHTTPBody:bodyData];
//2. 设置请求方式(必须大写)
[request setHTTPMethod:@"POST"];
//第四步:接收数据
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
//第五步: 解析数据
NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:(NSJSONReadingAllowFragments) error:nil];
NSLog(@"POST同步 = %@", dic);
}
总结: GET和POST的区别
- 与GET相比, POST的由两部分构成: 请求地址 + 请求数据, 而GET则将这两部分数据和为一部分.
- POST的Request对象, 是可变类型的, 因为下面要对Request进行设置
2.1 给Request 对象添加setHTTPBody
2.2给Request对象设置 setHTTPMethod