【发布时间】: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 错误,无法与服务器建立安全连接。
【问题讨论】:
-
好的,已删除!!