I am trying to connect to my https server which use a custom certificate(export on the server .p12 certificate).
Here is my code:
let filePath = Bundle.main.path(forResource: "ch-server", ofType: "cer")
let data = try! Data(contentsOf: URL(fileURLWithPath: filePath!))
let certificate = SecCertificateCreateWithData(nil, data as CFData)!
let pinEvaluator = PinnedCertificatesTrustEvaluator(certificates: [certificate], acceptSelfSignedCertificates: true, performDefaultValidation: true, validateHost: true)
let trustManager = ServerTrustManager(evaluators: [CHConstants.ApiHost: pinEvaluator])
let session = Session(serverTrustManager: trustManager)
session.request(url, method: .post, parameters: ["phone", phone], encoder: JSONParameterEncoder.default, headers: headers).responseJSON { response in
switch response.result {
case .success:
print("data:\(response.data)")
case let .failure(error):
print("error:\(error)")
}
}
// AF.request(url, method: .post, parameters: ["phone", phone], encoder: JSONParameterEncoder.default, headers: headers).responseJSON { response in
// switch response.result {
// case .success:
// print(response.data)
// case let .failure(error):
// print(error)
// }
// }
but the response is error:
error:sessionDeinitialized
You need to keep your Session
instance alive. Otherwise it will be immediately deinitialized and your requests cancelled, which is what that error indicates. Most commonly this is done through a singleton or other reference storage pattern.