URLError из-за отклонения URLAuthenticationChallenge слишком общийIOS

Программируем под IOS
Ответить
Anonymous
 URLError из-за отклонения URLAuthenticationChallenge слишком общий

Сообщение Anonymous »


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

В URLSessionDelegate реализуйте этот метод:

func urlSession(_ session: URLSession, DidReceive Challenge: URLAuthenticationChallenge) async -> (URLSession.AuthChallengeDisposition, URLCredential?) Затем выполните проверку через SecTrustEvaluateWithError и верните (.useCredential, URLCredential(trust:trust)), если она прошла успешно, и (.cancelAuthenticationChallenge, nil) если это не так.

Однако ошибка, возвращаемая при отклонении запроса в try await URLSession(...).data(from:), представляет собой URLError с кодом -999, который является URLError.Code.cancelled.

Как отличить другие отмены, чтобы сообщить пользователю, что запрос не выполнен из-за недействительного сертификата? Документация по URLError.Code.cancelled очень общая, поэтому я не могу полагаться исключительно на эту ошибку (или могу?).

В этой статье предлагается показывать ошибку прямо в URLSessionDelegate, что мне не кажется хорошим решением, поскольку код пользовательского интерфейса может просачиваться в сетевой код.

Есть ли какие-либо другие методы, которые я мог бы применить здесь, чтобы конкретно отловить ошибку из URLSession, когда сертификат был отклонен моей собственной логикой проверки?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»