201406041133326.jpg
使用AFN框架來訪問不受信任的https網站
當我們使用AFN框架向一個不受信任的https網站發出請求時必須做一些配置與操作才能保證不出錯,首先我們要禁用ATS特性,然后:
#import "ViewController.h"
#import "AFNetworking.h"
@interface ViewController ()
@end
@implementation ViewController
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
//01 創建會話管理者
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
//設置反序列化方法
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
// 驗證方式 AFSSLPinningModeNone:最不嚴格,只要是信任機構簽發的證書就會通過,若是自己服務器生成的證書在這里無法通過驗證
// AFSSLPinningModePublicKey:只驗證公鑰
// AFSSLPinningModeCertificate:最嚴格:除了驗證公鑰外,還會驗證域名/有效期等信息
AFSecurityPolicy *securityPolicy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
//設置允許不受信任的證書
securityPolicy.allowInvalidCertificates = YES;
//設置不驗證域名
securityPolicy.validatesDomainName = NO;
manager.securityPolicy = securityPolicy;
//02 發送GET請求
[manager GET:@"https://kyfw.12306.cn/otn" parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"success--%@",[[NSString alloc]initWithData:responseObject encoding:NSUTF8StringEncoding]);
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"failure--%@",error);
}];
}
@end