Я использую SwiftHTTP в приложении iOS для выполнения базовой проверки подлинности на веб-сервере. Если аутентификация завершается успешно, все работает так, как ожидалось. Однако, если аутентификация завершается с ошибкой (с кодом 401), для вызова обработчика отказа требуется от 35 до 45 секунд. Код выглядит следующим образом:Ошибка времени проверки подлинности SwiftHTTP
var request = HTTPTask()
auth = HTTPAuth(username: user, password: password)
auth!.persistence = .ForSession
request.auth = auth
request.requestSerializer.timeoutInterval = 5
request.GET("http://\(ipaddr)", parameters: nil,
success: {(response : HTTPResponse) in
NSLog("login success")
},
failure: {(error: NSError, response: HTTPResponse?) in
NSLog("login failure")
}
)
Обратите внимание, что значение тайм-аута установлено равным 5 секундам. Проверка кода SwiftHTTP, фактическое выполнение запроса сводится к:
var request = NSMutableURLRequest(URL: url, cachePolicy: cachePolicy, timeoutInterval: timeoutInterval)
Я добавил несколько отладочных строк в SwiftHTTP, чтобы проверить, если timeoutInterval
идет правильно, и это. Я попробовал варианты политики кэширования и других настраиваемых параметров без каких-либо изменений в результате. Я также открыл telnet-соединение с HTTP-сервером и отправил один и тот же запрос вручную, и результат 401 был возвращен немедленно, как и ожидалось.
Любые идеи, почему это происходит?
Аутентификация работает, когда вы указываете правильное имя пользователя и пароль. Проблема заключается в нежелательной задержке при неудачной аутентификации (поскольку пользователь ввел неправильное имя пользователя или пароль). – cmatsuoka