?以前一直都沒有培養(yǎng)出來一個寫博客的習慣,總喜歡把自己遇到的問題和自己的心得寫在自己的筆記里,直到最近在我碰到一個棘手的問題,而這個問題又是我曾經(jīng)遇到過且有記錄的,只是因為換了一個新的工作環(huán)境,原來的東西都沒帶在身邊,愣是在網(wǎng)上找了半天才找到解決問題的辦法.于是想起朋友一直極力推薦我使用的簡書,倒不是沒用過簡書,只是一直都在默默的當著伸手黨和關注著我自己喜歡的一些大神的博客.一個偉大的計劃就這么誕生了,從今天起,開始把自己遇到的一些問題和心得都在這里記錄下來.廢話不多說,正好今天被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",尼瑪,什么鬼,以前一直都好用的說,于是上網(wǎng)查了好一會,開始一直關注的是中文文檔,看了半天也米有一個人說到點上.沒辦法,只好硬著頭皮去查外語網(wǎng)站了,果然還是老外效率高,終于在stackoverflow上面找到了答案.
這個錯誤的原因是:需要在服務端Nginx上配置TLSV1.2,否則就會報錯.當然人家很好心的給了我們一個解決的辦法,就是在info.plist里面設置一下可支持的TLS最低版本到1.0即可.
完事之后,就歐拉!