在iOS7中新增了NSURLSession的类
这个类的诞生意味着NSURLConnection逐步将退出历史舞台
现在使用最广泛的第三方网络框架:AFNetworking、SDWebImage等等都使用了NSURLSession
我们知道,对于HTTP网络请求来说有两种形式
- GET
POST
这两种形式的区别如下:- GET操作简单,所有参数直接写到地址中
- POST操作复杂,将参数和地址分开来写
- GET请求安全性不如POST形式
- GET请求URL地址长度有限,POST请求可以传递大量数据
那么现在分别看一下NSURLSession在两种形式下的使用
异步GET请求
//网址写入
NSURL * url = [NSURL URLWithString:@"网址"];
//创建session
NSURLSession * session = [NSURLSession sharedSession];
//设置需要请求的url并创建请求任务
NSURLSessionDataTask * task = [session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
//此处写执行代码
}];
//完成任务。一定不能忘!
[task resume];
异步POST请求
//网址写入
NSURL * url = [NSURL URLWithString:@"网址"];
//创建请求
NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:url];
//设置请求形式
[request setHTTPMethod:@"POST"];
NSString *str = @"type=focus-c";
//设置body
NSData * data = [ str dataUsingEncoding:NSUTF8StringEncoding];
[request setHTTPBody:data];
//创建session
NSURLSession *session = [NSURLSession sharedSession];
//创建任务
NSURLSessionDataTask * task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
//此处写执行代码
}];
//完成任务。一定不能忘!
[task resume];
注意
- Xcode7后进行网络连接时需在info.plist文件里面增加
APP Transporty Settings (NSDictionary) -> Allow Arbitrary Loads of (BOOL) 选择YES