Разрешить произвольные нагрузки, не работающие после конверсии Swift 5 - PullRequest
0 голосов
/ 04 июня 2019

У меня есть приложение, которое взаимодействует с API на локально размещенных серверах с самозаверяющими сертификатами.Я включил код для разрешения произвольных загрузок в info.plist, а также включил URLSessionDelegate, когда мы получаем вызов.

У меня есть строка печати в функции urlsession, и эта строка никогда не печатается, поэтому я чувствую, что этот код никогда не вызывается.Я наследую URLSessionDelegate в моем классе.Все это работало в Swift 4.

func urlSession(_ session: URLSession, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {

    //accept all certs when testing, perform default handling otherwise
        print("Accepting cert as always")
        completionHandler(.useCredential, URLCredential(trust: challenge.protectionSpace.serverTrust!))
}

Вот полученные ошибки:

2019-06-04 09:59:55.604023-0500 The MUT[8866:1617557] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9843)
2019-06-04 09:59:55.604056-0500 The MUT[8866:1617557] Task <F8D75C99-49ED-45BE-B764-942B748942DB>.<1> HTTP load failed (error code: -1202 [3:-9843])
2019-06-04 09:59:55.604150-0500 The MUT[8866:1617558] Task <F8D75C99-49ED-45BE-B764-942B748942DB>.<1> finished with error - code: -1202```

Ответы [ 2 ]

0 голосов
/ 04 июня 2019

Убедитесь, что вы подписали своего делегата правильно, или попробуйте подписать его в viewDidLoad вашего ViewController.

Эта ошибка: Ошибка загрузки HTTP решается следующим образом:

NSAppTransportSecurity -> NSAllowsArbitraryLoads = true

0 голосов
/ 04 июня 2019

Это было решено. Я добавил делегат: self, делегатQueue: myOpQueue в объявление сессии.

let myOpQueue = OperationQueue()
...
let session = Foundation.URLSession(configuration: configuration, delegate: self, delegateQueue: myOpQueue)
...