Alamofire 5 AF.upload () не может отправить изображение на сервер с недействительным сертификатом - PullRequest
0 голосов
/ 27 марта 2020

Я отправляю изображение, используя следующий вызов:

AF.upload(...)

на «Сервер разработки», имеющий недействительный сертификат, и, следовательно, я получаю следующую ошибку:

NSLocalizedDescription=The certificate for this server is invalid. You might be connecting to a server that is pretending to be ...

Я уже решил эту проблему для вызовов "AF.request (...)"; то есть я могу выполнять вызовы AF.request (...) на сервер с недействительным сертификатом, используя следующий код:

#if DEBUGDEV

    //To enable connections with wrong certificate
    private let session: Session = {
        let evaluators: [String: ServerTrustEvaluating] = [
        "api.my.server.dev.api.group.com": DisabledEvaluator()
        ]

        let manager = ServerTrustManager(allHostsMustBeEvaluated: false,
                                         evaluators: evaluators)
        let configuration = URLSessionConfiguration.af.default

        return Session(configuration: configuration,
                       serverTrustManager: manager,
                       eventMonitors: [ AlamofireLogger() ])
    }()
#else
    private let session: Session = Session.default
#endif

И затем вызывая:

let request = self.session.request(urlConvertible)

Кроме того, я изменил файл Info.plist, чтобы он содержал «NSAppTransportSecurity -> NSExceptionDomains ->« api.my.server.dev.api.group.com »->« NSThirdPartyExceptionAllowsInsecureHTTPLoads = false »и другие записи, которые можно найти в другие сообщения StackOverFlow.

Однако; предыдущий код работает для «AF.request (...)», но не для «AF.upload (...)», поэтому мне нужен способ, чтобы «AF.upload (..)» работал правильно для серверы с недействительным сертификатом.

Это способ «вставить» «Сеанс» в вызов «AF.upload (...)»? Или есть другой способ, чтобы «AF.upload (...)» мог подключаться к серверам с недействительным сертификатом?

1 Ответ

1 голос
/ 28 марта 2020

После просмотра и обновления моего вопроса я понял, что ответ прост; то есть точно так же я не вызываю AF.request (...), а self.session.request (...)

Я могу сделать то же самое с upload; то есть звонить:

self.session.upload(...)

вместо звонка:

AF.upload(...)
...