UI-Senior网络请求2--同步GET / POST

首先, 要想实现网络访问, 必须在工程中的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的区别

  1. 与GET相比, POST的由两部分构成: 请求地址 + 请求数据, 而GET则将这两部分数据和为一部分.
  1. POST的Request对象, 是可变类型的, 因为下面要对Request进行设置
    2.1 给Request 对象添加setHTTPBody
    2.2给Request对象设置 setHTTPMethod

你可能感兴趣的:(UI-Senior网络请求2--同步GET / POST)