我想在webservice调用中实现SSL。 但是有一个错误如下:
NSURLConnection / CFURLConnection HTTP加载失败(kCFStreamErrorDomainSSL,-9813)
func checkNetworkConnection(callback: ((isConnected: Bool) -> Void)!)
{
var checkNetworkURL: String = “TESTURL”
var request = NSMutableURLRequest(URL: NSURL(string: checkNetworkURL)!)
request.HTTPMethod = "POST"
request.addValue("application/xml", forHTTPHeaderField: "Content-Type")
request.addValue("application/xml", forHTTPHeaderField: "Accept")
request.timeoutInterval = 20000.0
var response: NSURLResponse?
var error: NSError?
var data = NSURLConnection.sendSynchronousRequest(request, returningResponse: &response, error: &error)
if error == nil{
if data != nil{
self.parser.getLoginResultDataDictionary(data!) {(dataDictionary) -> Void in
if let dataDict = dataDictionary[self.constants.defaultsKeys.RESPONSE_RESULT] as? Dictionary<String,String>
{
if let status: AnyObject = dataDict[self.constants.defaultsKeys.RESPONSE_STATUS] {
if status as! String == self.constants.defaultsKeys.RESPONSE_SUCCESS {
callback(isConnected: true)
}
else{
callback(isConnected: false)
}
}
else{
callback(isConnected: false)
}
}
else{
callback(isConnected: false)
}
}
}
else{
callback(isConnected: false)
}
}
else{
callback(isConnected: false)
}
//}
}
public func connection(connection: NSURLConnection, willSendRequestForAuthenticationChallenge challenge: NSURLAuthenticationChallenge)
{
challenge.sender.useCredential(NSURLCredential(forTrust: challenge.protectionSpace.serverTrust), forAuthenticationChallenge: challenge)
challenge.sender.continueWithoutCredentialForAuthenticationChallenge(challenge)
}
public class NetworkUtil:NSObject,NSURLConnectionDelegate { }
如何在上面的代码中配置SSL?
谢谢,
答案 0 :(得分:0)
据我所知,唯一的方法是实现NSURLConnectionDelegate方法:
func connection(connection: NSURLConnection, willSendRequestForAuthenticationChallenge challenge: NSURLAuthenticationChallenge)
{
challenge.sender.useCredential(NSURLCredential(forTrust: challenge.protectionSpace.serverTrust), forAuthenticationChallenge: challenge)
challenge.sender.continueWithoutCredentialForAuthenticationChallenge(challenge)
}
如果您要定位旧版本,则需要使用canAuthenticateAgainstProtectionSpace方法,该方法自iOS8以来已弃用。