我使用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