我已经为google.com和编写2方法附加了google.com文件。第一个方法可以调用URL,而不需要SSL固定:
@IBAction func Request_with_No_Pinning() {
// let sessionManager = SessionManager()
Alamofire.request("https://google.com").response { response in
if response.response != nil{
print(response.response?.debugDescription as Any)
}
}
}它正在如预期的那样运作。第二种方法是使用google.com钉扎调用PublicKey:
@IBAction func Request_with_Pinning() {
var sessionManager = SessionManager()
let serverTrustPolicies: [String: ServerTrustPolicy] = [
"google.com": .pinPublicKeys(
publicKeys: ServerTrustPolicy.publicKeys(),
validateCertificateChain: true,
validateHost: true
)
]
sessionManager = SessionManager(
serverTrustPolicyManager: ServerTrustPolicyManager(
policies: serverTrustPolicies
)
)
sessionManager.request("https://google.com").response { response in
if response.response != nil{
print(response.response?.debugDescription as Any)
}
}
}这给我带来了错误:
2019年-08-28 UserInfo={NSErrorFailingURLStringKey=https://google.com/,sslpinning7184:114068任务.<1>加载失败,错误Domain=NSURLErrorDomain代码= -999“取消了”错误“NSErrorFailingURLKey=https://google.com/,_NSURLErrorRelatedURLSessionTaskErrorKey=( "LocalDataTask .<1>”),_NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask .<1>,NSLocalizedDescription=cancelled} -999 2019-08-28 21:55:21.232343+0300 sslpinning7184:114069任务.<1>完成了错误代码:-999
发布于 2019-08-28 20:30:49
您的请求正被取消,因为您的SessionManager超出了作用域,被重新初始化,并自动取消请求。你需要保持你的SessionManager在附近。这通常是通过单例完成的。
https://stackoverflow.com/questions/57698561
复制相似问题