Alamofire分析

Manager 生成RequestRequest
根据请求不同生成不同的delegate对象
SessionDelegate 利用subdelegates存储对应Request的对应的deleagte
同时实现一些通用的SessionDelegate通过self[task] 调用对应的delegate方法
之所以这么实现大概是为了是Request能处理文件上传,下载,同时请求数据。参考 http://www.cocoachina.com/ios/20151118/14240.html
另外信任无效证书代码如下

func acceptInvalidSSLCerts() {  
    let manager = Alamofire.Manager.sharedInstance  
    print("trying to accept invalid certs")  
      
    manager.delegate.sessionDidReceiveChallenge = { session, challenge in  
        var disposition: NSURLSessionAuthChallengeDisposition = .PerformDefaultHandling  
        var credential: NSURLCredential?  
          
        print("received challenge")  
          
        if challenge.protectionSpace.authenticationMethod == NSURLAuthenticationMethodServerTrust {  
            disposition = NSURLSessionAuthChallengeDisposition.UseCredential  
            credential = NSURLCredential(forTrust: challenge.protectionSpace.serverTrust!)  
        } else {  
            if challenge.previousFailureCount > 0 {  
                disposition = .CancelAuthenticationChallenge  
            } else {  
                credential = manager.session.configuration.URLCredentialStorage?.defaultCredentialForProtectionSpace(challenge.protectionSpace)  
                  
                if credential != nil {  
                    disposition = .UseCredential  
                }  
            }  
        }  
          
        return (disposition, credential)  
    }  
}  

你可能感兴趣的:(Alamofire分析)