我一直在使用以下代码
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc]initWithRequest:request]; operation.allowsInvalidSSLCertificate=YES;
现在我将AFNetworking更改为2.0的最新版本.使用AFHTTPRequestOperation,operation.allowsInvalidSSLCertificate不再工作.根据我使用的文件
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager]; manager.securityPolicy.allowInvalidCertificates = YES;
我的请求代码是
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];
但是,这对于需要证书的HTTPS不起作用.我该怎么办才能使这项工作?
解决方法
我在[操作开始之前]添加以下代码解决了这个问题;
AFSecurityPolicy *sec=[[AFSecurityPolicy alloc] init]; [sec setAllowInvalidCertificates:YES]; operation.securityPolicy=sec;
这是因为AFHTTPRequestOperationManager未连接到AFHTTPRequestOperation.所以设置管理员的安全证书在请求操作时不能做魔术.所以必须初始化并分配一个到AFHTTPRequestOperation.
希望这个帮助有人:)