首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift,SSL自签名证书IOS8+

Swift,SSL自签名证书IOS8+
EN

Stack Overflow用户
提问于 2015-08-19 21:22:30
回答 1查看 739关注 0票数 1

我想在webservice调用中实现SSL。但出现如下错误:

NSURLConnection/CFURLConnection HTTP加载失败(kCFStreamErrorDomainSSL,-9813)

下面是我的代码

代码语言:javascript
复制
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)
        }
    //}
     }

添加的方法

代码语言:javascript
复制
   public func connection(connection: NSURLConnection,  willSendRequestForAuthenticationChallenge challenge: NSURLAuthenticationChallenge)
{
    challenge.sender.useCredential(NSURLCredential(forTrust: challenge.protectionSpace.serverTrust), forAuthenticationChallenge: challenge)
    challenge.sender.continueWithoutCredentialForAuthenticationChallenge(challenge)
}

如下所示添加代理

公共类NetworkUtil : NSObject,NSURLConnectionDelegate {}

如何在上面的代码中配置SSL?

谢谢,

EN

回答 1

Stack Overflow用户

发布于 2015-08-19 21:28:03

据我所知,唯一的方法是实现NSURLConnectionDelegate方法:

代码语言:javascript
复制
func connection(connection: NSURLConnection, willSendRequestForAuthenticationChallenge challenge: NSURLAuthenticationChallenge)
{
    challenge.sender.useCredential(NSURLCredential(forTrust: challenge.protectionSpace.serverTrust), forAuthenticationChallenge: challenge)
    challenge.sender.continueWithoutCredentialForAuthenticationChallenge(challenge)
}

如果你的目标是老版本,你需要canAuthenticateAgainstProtectionSpace方法,这个方法在iOS8之后就被废弃了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32096767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档