【问题标题】:Alamofire fails with SSL error code: -1200Alamofire 失败并出现 SSL 错误代码:-1200
【发布时间】:2018-09-04 09:25:47
【问题描述】:

我正在连接到自签名 URL,因此我已配置为禁用此 URL 的 SSL 证书评估。我正在使用 Alamofire 进行网络操作。

static let sessionManager: SessionManager = {
    let configuration = URLSessionConfiguration.default
    configuration.timeoutIntervalForRequest = NetworkConfiguration.sessionTimeoutInterval
    configuration.httpAdditionalHeaders = [
        "Accept": "application/json",
        "Content-Type": "application/json"
    ]
    let serverTrustPolicies: [String: ServerTrustPolicy] = [
        "xyz.com:12345" : .disableEvaluation
    ]
    let trustPolicyManager = ServerTrustPolicyManager(policies: serverTrustPolicies)
    return Alamofire.SessionManager(configuration: configuration, serverTrustPolicyManager: trustPolicyManager)
}()

我还在 info.plist 文件中禁用了 ATS:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
</dict>

这是我连接到 API 服务的方式:

        WebService.sessionManager.request(url, method: .get, parameters: params, encoding: resource.method.encodingFormat(), headers: headers)
            .validate(statusCode: 200..<300)
            .validate(contentType: ["application/json"])
            .responseJSON { response in

                let requestAPI = response.request?.url?.absoluteString
                print("**********network Manager request: \(requestAPI ?? "request not found") ")

                switch response.result {
                case .success:
                    if let json = response.data {
                        print("############Network Manager response: \(String(data: json, encoding: String.Encoding.utf8) ?? "Response Data could not be printed")")
                        completion(json, nil)
                    } else {
                    }

                case .failure(let error):
                    let errorFailureCode = (error as NSError).code
                    print("Network manager failure with reason: \(error.localizedDescription)")
                    completion(nil, error)
                }

        }

尽管如此,我得到了错误:

NSURLSession/NSURLConnection HTTP 加载失败 (kCFStreamErrorDomainSSL,-9800) 任务 . HTTP 加载失败(错误代码:-1200 [3:-9800]) Alamofire 错误 - 发生 SSL 错误,无法与服务器建立安全连接。

【问题讨论】:

  • 好的,已删除!!

标签: ios swift alamofire


【解决方案1】:

尝试从主机字符串中删除端口。

let serverTrustPolicies: [String: ServerTrustPolicy] = [
    "xyz.com" : .disableEvaluation
]

【讨论】:

  • @RashmiRanjanmallick 您是否能够从另一个客户端连接,例如邮递员/网络浏览器/卷曲?
  • 我在头疼了几个小时后发现了这个问题:(这实际上是服务器的问题。所以,我的代码没有问题。
  • 不知道应该删除问题还是添加为答案?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-01
  • 2012-01-22
  • 1970-01-01
  • 2021-08-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多