1.Get请求
-(void)getSession{
//1.快捷方式获得session对象
NSURLSession *session = [NSURLSession sharedSession];
//2.创建请求路径
NSURL *getUrl = [NSURL URLWithString:@""];
//3.通过url初始化task,在block内对返回的数据进行处理
NSURLSessionTask *task = [session dataTaskWithURL: getUrl completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
NSString *jsonString = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
NSLog(@"%@",jsonString);
}];
//4.启动任务
[task resume]; //所有类型的task都要启动
}
2.POST请求
-(void)postSession
{
//创建请求路径
NSURL *postUrl = [NSURL URLWithString:@""];
//创建请求对象
NSMutableURLRequest *postRequest = [NSMutableURLRequest requestWithURL:postUrl];
//设置请求方式
postRequest.HTTPMethod = @"POST";
postRequest.HTTPBody = [@"" dataUsingEncoding:NSUTF8StringEncoding];
//快捷方式获得session对象
NSURLSession *session = [NSURLSession sharedSession];
//通过url初始化task,在block内部对返回的数据进行处理
NSURLSessionTask *postTask = [session dataTaskWithURL:postUrl completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
NSString *jsonString = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
NSLog(@"%@",jsonString);
}];
[postTask resume]; //执行任务
}
3.使用NSURLSessionDataDelegate处理网络请求
- session的delegate为只读,所以要通过以下方法创建session并设置代理
- //第一个参数:配置参数
- //第三个参数:NSOperationQueue,请求放在队列里执行
//1.创建session并设置代理
NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[[NSOperationQueue alloc]init]];
//2.通过url初始化task
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@""]]];
//3.启动任务
[dataTask resume];
实现 NSURLSessionDataDelegate
- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask
didReceiveResponse:(NSURLResponse *)response
completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler
{
//接收到服务器的响应
//允许处理服务器响应,才能继续接受服务器返回的数据
completionHandler(NSURLSessionResponseAllow);
}
- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask
didReceiveData:(NSData *)data
{
//收到数据
//处理每次接收到的数据
}
简单的NSURLSession的使用,大家参考哦😬😊·
网友评论