之前一直用的ASI请求数据,但最近因为业务的原因,需将http网络请求改成https网络请求了,所以来谈一谈如何加载https的数据吧。
第一步,你需要一个证书存在你的项目里,这个证书主要的作用是将你的接口和参数以及返回值进行加密的,该证书由你的服务器端提供一个证书,服务器端使用自签的证书或者花钱买的证书都可以,但是需要保证的证书的安全性。
第二步,获取证书并校验证书(通过代码控制)
+ (AFSecurityPolicy *)customSecurityPolicy {
/**** SSL Pinning ****/
NSString *cerPath = [[NSBundle mainBundle] pathForResource:@"XXX" ofType:@"cer"];
NSData *certData = [NSData dataWithContentsOfFile:cerPath];
AFSecurityPolicy *securityPolicy = [[AFSecurityPolicy alloc] init];
[securityPolicy setAllowInvalidCertificates:YES];
[securityPolicy setPinnedCertificates:@[certData]];
/**** SSL Pinning ****/
return securityPolicy;
第三步,在请求网络数据时,先调用,然后再进行正常的https网络请求就可以了
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager sharedManager];
[manager setSecurityPolicy:[DataService customSecurityPolicy]];