微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

swift – Alamofire不处理身份验证挑战

利用Alamofire,我注意到下面的代码没有被断点击中.我建立连接,并收到以下错误:(错误域= NSURLErrorDomain代码= -1200“发生SSL错误,无法建立与服务器的安全连接.”UserInfo = 0x1741b3f60 {_kcfStreamErrorCodeKey = -9806,NSLocalizedRecoverySuggestion =是否要连接到服务器?,NSUnderlyingError = 0x17484b8e0“操作无法完成.(kcfErrorDomainCFNetwork error -1200.)”,NSLocalizedDescription =发生SSL错误,无法建立与服务器的安全连接.,

func connection(urlRequest:NSURLRequest,rest:RESTFull?,completion: (AnyObject?,NSError?)->Void){
    let req = request(urlRequest).responseJSON(options: .AllowFragments) { (_,response,data,error) -> Void in
        if let actualData: AnyObject = data {
            completion(actualData,nil)
        }else {
            completion(nil,error)
        }
    }

    req.delegate.taskDidReceiveChallenge = { session,_,challenge in
        println("Got challenge: \(challenge),in session \(session)")

        var disposition: NSURLSessionAuthChallengedisposition = .UseCredential
        var credential: NSURLCredential = NSURLCredential()

        if (challenge.protectionSpace.authenticationMethod == NSURLAuthenticationMethodServerTrust){
            disposition = NSURLSessionAuthChallengedisposition.UseCredential
            credential = NSURLCredential(forTrust: challenge.protectionSpace.serverTrust!)
        }
        return(disposition,credential)
    }
}

解决方法

您无法将值设置为Request Class的taskDidReceiveChallenge.您可以改用Manager类的委托.

Manager.sharedInstance.delegate.taskDidReceiveChallenge = { session,challenge in
    print("Got challenge: \(challenge),in session \(session)")
    var disposition: NSURLSessionAuthChallengedisposition = .UseCredential
    var credential: NSURLCredential = NSURLCredential()

    if (challenge.protectionSpace.authenticationMethod == NSURLAuthenticationMethodServerTrust){
        disposition = NSURLSessionAuthChallengedisposition.UseCredential
        credential = NSURLCredential(forTrust: challenge.protectionSpace.serverTrust!)
    }
    return(disposition,credential)
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐