【发布时间】:2015-06-26 09:11:37
【问题描述】:
我正在尝试与 URLSession 委托建立 ssl 连接,这是我收到的错误消息:
Objective-C 方法 'URLSession:didReceiveChallenge:completionHandler:' 提供的方法 'URLSession(:didReceiveChallenge:completionHandler:)' 与可选要求方法 'URLSession(:didReceiveChallenge:completionHandler:)' 冲突在协议'NSURLSessionDelegate'中
func URLSession(session: NSURLSession,
didReceiveChallenge challenge:
NSURLAuthenticationChallenge,
completionHandler:
(NSURLSessionAuthChallengeDisposition,
NSURLCredential!) -> Void) {
let serverTrust: SecTrustRef = challenge.protectionSpace.serverTrust!
let serverCert: SecCertificateRef = SecTrustGetCertificateAtIndex(serverTrust, 0).takeUnretainedValue()
let serverKey: NSData = SecCertificateCopyData(serverCert).takeRetainedValue()
let bundle: NSBundle = NSBundle.mainBundle()
let mainbun = bundle.pathForResource("ca", ofType: "der")
let key: NSData = NSData(contentsOfFile: mainbun!)!
// let turntocert: SecCertificateRef =
// SecCertificateCreateWithData(kCFAllocatorDefault, key).takeRetainedValue()
if serverKey == key {
let credential = NSURLCredential(forTrust: challenge.protectionSpace.serverTrust!)
challenge.sender!.useCredential(credential, forAuthenticationChallenge: challenge)
completionHandler(NSURLSessionAuthChallengeDisposition.UseCredential,credential)
}
else{
challenge.sender!.cancelAuthenticationChallenge(challenge)
completionHandler(NSURLSessionAuthChallengeDisposition.CancelAuthenticationChallenge, nil)
}
}
func URLSession(session: NSURLSession, task: NSURLSessionTask, willPerformHTTPRedirection response: NSHTTPURLResponse, newRequest request: NSURLRequest, completionHandler: (NSURLRequest!) -> Void) {
var newRequest : NSURLRequest? = request
print(newRequest?.description);
completionHandler(newRequest)
}
【问题讨论】:
标签: ios swift cocoa-touch swift2 xcode7