Ios Alamofire的证书、表单数据和HTTP头数据无效

Ios Alamofire的证书、表单数据和HTTP头数据无效,ios,swift,ssl,http-headers,alamofire,Ios,Swift,Ssl,Http Headers,Alamofire,我想使用Alamofire进行网络请求。服务器有无效的证书,我有头值和表单数据要发送。现在我试了很多问题,但到目前为止运气不好。我得到的只是需要正确设置Manager对象。 所以允许无效证书我这样做了: let serverTrustPolicies: [String: ServerTrustPolicy] = ["abc.com:8080/services/v2/xyz": .DisableEvaluation] let manager = Manager(serverTrustPolicyM

我想使用Alamofire进行网络请求。服务器有无效的证书,我有头值和表单数据要发送。现在我试了很多问题,但到目前为止运气不好。我得到的只是需要正确设置Manager对象。 所以允许无效证书我这样做了:

let serverTrustPolicies: [String: ServerTrustPolicy] = ["abc.com:8080/services/v2/xyz": .DisableEvaluation]
let manager = Manager(serverTrustPolicyManager:ServerTrustPolicyManager(policies: serverTrustPolicies))
var defaultHeaders = Alamofire.Manager.sharedInstance.session.configuration.HTTPAdditionalHeaders ?? [:]
    defaultHeaders["X-Auth-Module"] = "true"
    let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
    configuration.HTTPAdditionalHeaders = defaultHeaders
    let manager = Alamofire.Manager(configuration: configuration)
let serverTrustPolicyManager:ServerTrustPolicyManager = ServerTrustPolicyManager(policies: serverTrustPolicies)
let manager = Alamofire.Manager(configuration: configuration, delegate: Alamofire.Manager.sharedInstance.session.delegate, serverTrustPolicyManager: serverTrustPolicyManager)
然后,为了使用标题,我做了以下操作:

let serverTrustPolicies: [String: ServerTrustPolicy] = ["abc.com:8080/services/v2/xyz": .DisableEvaluation]
let manager = Manager(serverTrustPolicyManager:ServerTrustPolicyManager(policies: serverTrustPolicies))
var defaultHeaders = Alamofire.Manager.sharedInstance.session.configuration.HTTPAdditionalHeaders ?? [:]
    defaultHeaders["X-Auth-Module"] = "true"
    let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
    configuration.HTTPAdditionalHeaders = defaultHeaders
    let manager = Alamofire.Manager(configuration: configuration)
let serverTrustPolicyManager:ServerTrustPolicyManager = ServerTrustPolicyManager(policies: serverTrustPolicies)
let manager = Alamofire.Manager(configuration: configuration, delegate: Alamofire.Manager.sharedInstance.session.delegate, serverTrustPolicyManager: serverTrustPolicyManager)
为了合并上述两位经理,我做了以下操作:

let serverTrustPolicies: [String: ServerTrustPolicy] = ["abc.com:8080/services/v2/xyz": .DisableEvaluation]
let manager = Manager(serverTrustPolicyManager:ServerTrustPolicyManager(policies: serverTrustPolicies))
var defaultHeaders = Alamofire.Manager.sharedInstance.session.configuration.HTTPAdditionalHeaders ?? [:]
    defaultHeaders["X-Auth-Module"] = "true"
    let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
    configuration.HTTPAdditionalHeaders = defaultHeaders
    let manager = Alamofire.Manager(configuration: configuration)
let serverTrustPolicyManager:ServerTrustPolicyManager = ServerTrustPolicyManager(policies: serverTrustPolicies)
let manager = Alamofire.Manager(configuration: configuration, delegate: Alamofire.Manager.sharedInstance.session.delegate, serverTrustPolicyManager: serverTrustPolicyManager)

问题在于“委托”,我无法在此处找到合适的委托。或者,如果有任何其他简单的方法,请建议。新手Swift开发人员。

以下是此问题的解决方案:

    //set default headers
    var defaultHeaders = Alamofire.Manager.sharedInstance.session.configuration.HTTPAdditionalHeaders ?? [:]
    //I required this key    
    defaultHeaders["X-Auth-Module"] = "1"
        let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
        configuration.HTTPAdditionalHeaders = defaultHeaders

    let serverTrustPolicies: [String: ServerTrustPolicy] = [
        "10.10.10.1:8080": .DisableEvaluation
    ]

    manager = Alamofire.Manager(
        configuration: configuration,
        serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustPolicies))


    // Handling challange
    manager!.delegate.sessionDidReceiveChallenge = { session, challenge in
        var disposition: NSURLSessionAuthChallengeDisposition = .PerformDefaultHandling
        var credential: NSURLCredential?

        if challenge.protectionSpace.authenticationMethod == NSURLAuthenticationMethodServerTrust {
            disposition = NSURLSessionAuthChallengeDisposition.UseCredential
            credential = NSURLCredential(forTrust: challenge.protectionSpace.serverTrust!)
        } else {
            if challenge.previousFailureCount > 0 {
                disposition = .CancelAuthenticationChallenge
            } else {
                credential = self.manager!.session.configuration.URLCredentialStorage?.defaultCredentialForProtectionSpace(challenge.protectionSpace)

                if credential != nil {
                    disposition = .UseCredential
                }
            }
        }

        return (disposition, credential)
    }
现在,在管理器准备就绪后,只需使用管理器对象来创建请求

manager!.request(.POST, (req?.url())!, parameters: req?.headerParams(), encoding: .URL, headers:nil)
            .response(completionHandler: { req, res, data, error in
                print("req:\(req), res:\(res),data:\(data),error:\(error)")
            })