我使用NSURLSession dataTaskWithRequest:completionHandler:
向我的服务器发出一些请求。我正在使用自签名证书,所以当代理人URLSession:didReceiveChallenge:completionHandler:
被调用时,我可以执行内部检查以确认一切正常。NSURLSession didReceiveChallenge只调用一次
这对我发送的第一个请求非常有效。在我致电完成处理程序NSURLSessionAuthChallengeUseCredential
后,然后下一个请求永远不会调用URLSession:didReceiveChallenge:completionHandler:
。
由于我在这篇文章中不会涉及的原因,我很想每次都调用URLSession:didReceiveChallenge:completionHandler:
,这样我就可以自己进行检查。我假设NSURLSession以某种方式缓存证书并将其保存在某种“有效证书”列表中,因此每次都不会执行此检查。我想清除这个缓存,以便我可以每次都进行自己的检查。如果我重新启动应用程序,那么URLSession:didReceiveChallenge:completionHandler:
确实会再次被调用。
我试图凭证存储没有成功设置为nil:
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
configuration.URLCredentialStorage = nil;
NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration delegate:self delegateQueue:nil];
[[session dataTaskWithRequest:request
completionHandler:^(NSData *data,
NSURLResponse *response,
NSError *error) {
...
}] resume];
任何想法如何做到这一点?
谢谢!
请参阅: http://stackoverflow.com/questions/27065372/why-is-a-https-nsurlsession-connection-only-challenged-once-per-domain – 2015-01-08 12:58:05
非常感谢您的指点我这个!我已经放弃了希望! – Rob 2015-01-09 17:07:57
@Rob你有这个问题吗? – Ramis 2015-10-29 09:13:19