允许使用AFNetworking的无效证书

Has*_*ssy 9 objective-c ios afnetworking-2

我一直在使用以下代码

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc]initWithRequest:request];
operation.allowsInvalidSSLCertificate=YES;
Run Code Online (Sandbox Code Playgroud)

现在我已将AFNetworking更改为2.0的最新版本.operation.allowsInvalidSSLCertificate不与工作了AFHTTPRequestOperation.根据我使用的文件

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.securityPolicy.allowInvalidCertificates = YES;
Run Code Online (Sandbox Code Playgroud)

我的请求代码是

AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc]initWithRequest:request];

[operation  setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {

    NSLog (@"success: %@", operation.responseString);

}
                                  failure:^(AFHTTPRequestOperation *operation, NSError *error) {
                                      NSLog(@"error: %@",  error.description);
                                  }
 ];

[operation start];
[operation waitUntilFinished];
Run Code Online (Sandbox Code Playgroud)

但这不适用于需要证书的HTTPS.我应该怎么做才能使这项工作?

Has*_*ssy 25

我通过在[operation start]之前添加以下代码解决了这个问题;

AFSecurityPolicy *sec=[[AFSecurityPolicy alloc] init];
[sec setAllowInvalidCertificates:YES];
operation.securityPolicy=sec;
Run Code Online (Sandbox Code Playgroud)

发生这种情况是因为AFHTTPRequestOperationManager未连接到AFHTTPRequestOperation.因此设置管理器的安全证书不能在requestOperation上做魔术.因此必须初始化并为AFHTTPRequestOperation分配一个.

希望这能帮助别人:)