#certificate #alamofire #credentials
#сертификат #alamofire #учетные данные
Вопрос:
Я использую Alamofire и пытаюсь получить канал JSON со своего сервера. Сервер имеет самозаверяющий сертификат и доступ через пользователя и пароль.
вот мой код
let user = "user"
let password = "password"
let url1 = "https://10.0.1.2:4711/fhem/?cmd=jsonlist2amp;XHR=1"
let credential = URLCredential(user: user, password: password, persistence: .forSession)
let serverTrustPolicies :[String: ServerTrustPolicy] = [
"10.0.1.8": .disableEvaluation
]
let AlamoSession = SessionManager(serverTrustPolicyManager: ServerTrustPolicyManager(policies: serverTrustPolicies))
AlamoSession.request(url1 )
.authenticate(usingCredential: credential)
.responseJSON { response in
debugPrint(response.response)
print("Result value (response.result.value)")
//print (response.result.value?.valueForKey("status"))
}
но это не работает!
Как я могу это сделать?
сделать запрос get на URL-адрес https с самозаверяющим сертификатом??
В info.plist в моем приложении я добавляю настройки безопасности транспорта приложения — Разрешить произвольные загрузки — ДА
Ответ №1:
Я проигнорировал ошибки SSL, используя этот код.
import Alamofire
struct WebAPI {
static let sessionManager: SessionManager = {
switch MyEnvironment.server {
case .development:
return Alamofire.SessionManager(
serverTrustPolicyManager: ServerTrustPolicyManagerForDevelop()
)
case .staging, .production:
return Alamofire.SessionManager()
}
}()
private class ServerTrustPolicyManagerForDevelop: ServerTrustPolicyManager {
init() {
super.init(policies: [:])
}
override func serverTrustPolicy(forHost host: String) -> ServerTrustPolicy? {
return .disableEvaluation
}
}
}