以前一直都没有培养出来一个写博客的习惯,总喜欢把自己遇到的问题和自己的心得写在自己的笔记里,直到最近在我碰到一个棘手的问题,而这个问题又是我曾经遇到过且有记录的,只是因为换了一个新的工作环境,原来的东西都没带在身边,愣是在网上找了半天才找到解决问题的办法.于是想起朋友一直极力推荐我使用的简书,倒不是没用过简书,只是一直都在默默的当着伸手党和关注着我自己喜欢的一些大神的博客.一个伟大的计划就这么诞生了,从今天起,开始把自己遇到的一些问题和心得都在这里记录下来.废话不多说,正好今天被Xcode8上的https坑了好久,那就把它当做我在简书上的处子秀吧!
先看下这个demo的代码,这里使用最简单的不需要配置证书的模式,只需要如下两句代码即可搞定.
- (void)httpsDemo{
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
manager.securityPolicy.validatesDomainName = NO; // 语句1
manager.securityPolicy.allowInvalidCertificates = YES; // 语句2
[manager GET:@"https://kyfw.12306.cn/otn/leftTicket/init" parameters:nil success:^(NSURLSessionDataTask *task, id responseObject) {
NSLog(@"%@", responseObject);
NSLog(@"成功");
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog(@"失败");
NSLog(@"%@",error);
}];
}
但是一运行,就会报错"Error Domain=NSURLErrorDomain Code=-1200 "An SSL error has occurred and a secure connection to the server cannot be made",尼玛,什么鬼,以前一直都好用的说,于是上网查了好一会,开始一直关注的是中文文档,看了半天也米有一个人说到点上.没办法,只好硬着头皮去查外语网站了,果然还是老外效率高,终于在stackoverflow上面找到了答案.
这个错误的原因是:需要在服务端Nginx上配置TLSV1.2,否则就会报错.当然人家很好心的给了我们一个解决的办法,就是在info.plist里面设置一下可支持的TLS最低版本到1.0即可.
完事之后,就欧拉!
网友评论