UI控件 NSURLSession的基本使用

viewController.m文件的实现:

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

//**********确保透明传输的安全性

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    [self get];
}



//GET请求:把参数放在URL里面 简答获取数据 http://主机地址/路径?参数1&参数2&参数3

//POST请求: 把参数放在请求体里面,修改数据等操作  http://主机地址/路径
//所以POST请求安全性会更好一些

- (void)get
{
    // 1 确定请求路径
    NSURL * url = [NSURL URLWithString:@"https://www.jianshu.com/p/14385b1db4f3"];
    
    //2 创建一个请求对象
    NSURLRequest * request = [NSURLRequest requestWithURL:url];
    
    //3 创建会话对象
    // 先用单例方法创建
    NSURLSession * session = [NSURLSession sharedSession];
    
    //4 根据会话对象 创建一个请求Task 任务
    //参数1:请求对象 2.completionHandler:完成后的回调
    //2.详情:data:响应体  response:响应头 error:错误信息
    
    //注意 该请求任务默认处于 挂起状态
    //该方法内部会自动的将url包装成一个请求对象(默认GET请求)
    NSURLSessionDataTask * dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        //解析服务器返回的数据 直接转化成字符串转化即可
        NSLog(@"%@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
    }];
    
    //5 需要执行请求任务 resume:恢复
    [dataTask resume];
    
}

//改造
- (void)get2
{
    [[[NSURLSession sharedSession] dataTaskWithURL:[NSURL URLWithString:@"https://www.jianshu.com/p/14385b1db4f3"] completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        NSLog(@"%@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
    }]resume];
    
    
}

//如何发送pose请求
- (void)post
{
    // 1 确定请求路径
    NSURL * url = [NSURL URLWithString:@"https://www.jianshu.com/p/14385b1db4f3"];
    
    //2 创建一个可变的请求对象
    NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:url];
    
    // 3 修改请求方法
    request.HTTPMethod = @"POST";
    
    // 4 设置参数
    request.HTTPBody = [@"canshu" dataUsingEncoding:NSUTF8StringEncoding];//里面是问号之后的参数
    
    // 5 创建会话对象
    NSURLSession * session = [NSURLSession sharedSession];
    
    // 6 创建一个请求任务
    //⚠️ completebBlock 默认在子线程中调用
    NSURLSessionDataTask * dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        // 8 解析服务器返回的数据
        NSLog(@"%@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
    }];
    
    // 7 执行请求
    [dataTask resume];
    
}

//- (void)viewDidLoad {
//    [super viewDidLoad];
//    // Do any additional setup after loading the view, typically from a nib.
//}
//
//
//- (void)didReceiveMemoryWarning {
//    [super didReceiveMemoryWarning];
//    // Dispose of any resources that can be recreated.
//}


@end

猜你喜欢

转载自blog.csdn.net/teropk/article/details/81810982