众所周知,iOS9.0以后,NSURLConnection将逐渐被NSURLSession取代,但是刚刚接触的朋友可能对于NSURLSession的用法并不是很了解,下面小编将根据自己的理解教大家如何同比置换两个方法~
他们需要请求的东西相同,比如:
NSURL *url = [NSURL URLWithString: @"http://pic14.nipic.com/20110522/7411759_164157418126_2.jpg"];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL: url cachePolicy: NSURLRequestUseProtocolCachePolicy timeoutInterval: 10];
[request setHTTPMethod: @"GET"];
NSURLConnection用法:
[NSURLConnection sendAsynchronousRequest: request
queue: [NSOperationQueue mainQueue]
completionHandler: ^(NSURLResponse *response, NSData *data, NSError *error){
if (error) {
} else {
NSDictionary *jsonObject=[NSJSONSerialization
JSONObjectWithData:data
options:NSJSONReadingMutableLeaves
error:nil];
NSLog(@"%@",jsonObject);
}
}];
NSURLSession用法:
NSURLSessionDataTask *sessionDataTask = [[NSURLSession sharedSession] dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
if (error) {
} else {
NSDictionary *jsonObject=[NSJSONSerialization
JSONObjectWithData:data
options:NSJSONReadingMutableLeaves
error:nil];
}
}];
[sessionDataTask resume];
亲们请注意,本人只是随便找了一个图片的请求网址,如果亲们想请求数据,就可以通过我上边写的方法直接将NSData转化为字典啦!到此基本替换功能完成!
*****重要的事情说三遍:
记住一定需要将task resume才可以执行请求!
记住一定需要将task resume才可以执行请求!
记住一定需要将task resume才可以执行请求!
对于NSURLConnection的代理方法调用,请看下边
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
对于NSURLSession的代码调用,请看下边:
NSURLSessionConfiguration *cfg = [ NSURLSessionConfiguration defaultSessionConfiguration];
NSURLSession *session = [NSURLSession sessionWithConfiguration:cfg delegate:self delegateQueue:[NSOperationQueue mainQueue]];
对于代理方法的实现,NSURLSession有三个代理方法,均是上面这个代理方法进行调用,三个代理分别为:
NSURLSessionDelegate, NSURLSessionDataDelegate, NSURLSessionTaskDelegate。
相信经过上面的介绍,大家应该对于NSURLSession有了初步的理解,想要了解的更加详细,可以自己参照官方文档继续研究啦~
友情链接:iOS9.0之后,要手动配置info.plist修改请求为https,具体为
升级为iOS9后,默认请求类型为https,如何使用http进行请求会报错
The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.
原因 iOS9引入了新特性App Transport Security (ATS)
新特性要求App内访问的网络必须使用HTTPS
协议。
但是现在公司的项目使用的是HTTP
协议,使用私有加密方式保证数据安全。现在也不能马上改成HTTPS
协议传输。
解决方案
方案一:让服务器修改为TLS1.2
方案二:在plist中设置使用http请求
-
在Info.plist中添加
NSAppTransportSecurity
类型Dictionary
。 -
在
NSAppTransportSecurity
下添加NSAllowsArbitraryLoads
类型Boolean
,值设为YES
第一步:在plist中添加NSAppTransportSecurity项,此项为NSDictionary
第二步:在NSAppTransportSecurity下添加
1
|
NSAllowsArbitraryLoads类型为Boolean,value为YES
|
苹果正在加大应用安全的管控,这个举措可以看出苹果对信息安全的重视,也暴露出大部分应用传输数据时都是未经过加密的,或使用私有方式加密,以至于苹果开始对开发者提出要求。
私有加密虽然一定程度上是安全的,但是终究不是一个长久之计。应该早日使用HTTPS
确保信息安全!
参考链接:http://www.bubuko.com/infodetail-1135674.html