HTTPS请求的时候:

[1]证书是受信任的,什么都不用做

[2]证书是不受信任的,是自签名的

  (1)修改配置文件,禁用ATS特性

  (2)信任并安装数字证书

NSURLSession的示例代码如下:

#import "ViewController.h"

@interface ViewController ()<NSURLSessionDataDelegate>

@end

@implementation ViewController

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
NSURL *url = [NSURL URLWithString:@"https://kyfw.12306.cn/otn/"];
NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[NSOperationQueue mainQueue]];
[[session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
NSLog(@"%@", [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
}] resume];
} - (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge completionHandler:(void (^)(NSURLSessionAuthChallengeDisposition, NSURLCredential * _Nullable))completionHandler {
NSLog(@"%@", challenge.protectionSpace);
/*
NSURLSessionAuthChallengeUseCredential = 0, Use the specified credential, which may be nil
NSURLSessionAuthChallengePerformDefaultHandling = 1, Default handling for the challenge - as if this delegate were not implemented; the credential parameter is ignored.
NSURLSessionAuthChallengeCancelAuthenticationChallenge = 2, The entire request will be canceled; the credential parameter is ignored.
NSURLSessionAuthChallengeRejectProtectionSpace = 3, This challenge is rejected and the next authentication protection space should be tried; the credential parameter is ignored.
*/
NSURLCredential *credentail = [[NSURLCredential alloc] initWithTrust:challenge.protectionSpace.serverTrust];
completionHandler(NSURLSessionAuthChallengeUseCredential, credentail);
}

AFN的设置

最新文章

  1. php经典算法(转载)
  2. Jmeter学习(三十三)调试工具Debug Sampler
  3. MVCC浅析(转)
  4. Bootstrap 容器(Container)及网格说明-(二)
  5. Python软件目录结构规范
  6. Java入门(二):注释和基本数据类型
  7. python 参数传递 传值还是传引用
  8. font-smoothing使用后字体看起来会更清晰舒服
  9. 网络编程基础【day10】:IO多路复用
  10. python调用nmap探测局域网设备
  11. Grunt、Gulp区别 webpack、 requirejs区别
  12. (转)python3 urllib.request.urlopen() 错误UnicodeEncodeError: &#39;ascii&#39; codec can&#39;t encode characters
  13. PosgreSQL 9.0 High Performance中文版瑕疵
  14. avascript小技巧
  15. LR参数和变量
  16. 企业和开发人员究竟该如何适应web标准?
  17. 仿知乎日报App
  18. js使用浏览器的另存为下载文件
  19. Codeforces 1023 B.Pair of Toys (Codeforces Round #504 (rated, Div. 1 + Div. 2, based on VK Cup 2018 Fi)
  20. 生成静态页面方法 .NET

热门文章

  1. 微信小程序—支付宝小程序与微信小程序的不同点对比
  2. ZKWeb 官网与演示站点的部署步骤 (Linux + Nginx + Certbot)
  3. Java用广度优先搜索快速搜索文件
  4. 耐人寻味的CSS属性font-family
  5. springboot使用hibernate validator
  6. Go使用变量类型声明和方法的注意事项
  7. Spring Bean Expression Language(EL)
  8. 理解 Flutter 中的 Key
  9. Java的反射机理
  10. 第K个语法符号