Estou construindo um aplicativo que tem um login usando autenticação básica http. Se as credenciais estiverem corretas, funciona bem. No entanto, para credenciais inválidas, não consigo acessar o código de status (para testar para 401) e os erros localizedDescription mostram: cancelado
gerado online
Faça login usando autenticação HTTP Basic com credenciais incorretas
passe o código de status mesmo se houver uma falha.
@ dylan-colaco estou correto ao dizer que você precisa acessar o código de status da resposta HTTP para determinar a próxima ação em seu aplicativo (por exemplo, pedir aos usuários para tentarem novamente)?
cc @ jaz-ah @Edubits
Sim, está correto. Pelo que posso ver, o código de status da resposta HTTP está acessível apenas para uma resposta bem-sucedida no momento, não para respostas malsucedidas (como 401).
em minha base de código, estou adicionando isso na parte inferior - isso ajuda nesse problema e vou fazer um PR para trazer para esta árvore em breve.
private func processRequest(request: Request, _ managerId: String, _ completion: (response: Response<T>?, error: ErrorType?) -> Void) {
if let credential = self.credential {
request.authenticate(usingCredential: credential)
}
request.responseJSON(options: .AllowFragments) { response in
managerStore.removeValueForKey(managerId)
// AlamoFire doesn't automatically check status responses for error codes
// so we do it manually here - also we could call validate() on the AlamoFire
// request but it doesn't put the status code in the error message
// which isn't too helpful in the client code
if request.response?.statusCode >= 400 {
let error = NSError(domain: (request.response?.URL?.URLString)!, code: (request.response?.statusCode)!, userInfo: nil)
error.log()
completion(response: nil, error: error)
return
}
Comentários muito úteis
em minha base de código, estou adicionando isso na parte inferior - isso ajuda nesse problema e vou fazer um PR para trazer para esta árvore em breve.