Est-il possible d'ajouter un gestionnaire de délai pour les demandes Alamofire ?
Dans mon projet, j'utilise Alamofire de cette façon :
init() {
let configuration = NSURLSessionConfiguration.defaultSessionConfiguration()
configuration.timeoutIntervalForRequest = 30
self.alamofireManager = Alamofire.Manager(configuration: configuration)
}
func requestAuthorizationWithEmail(email:NSString, password:NSString, completion: (result: RequestResult) -> Void) {
self.alamofireManager!.request(.POST, "myURL", parameters:["email": email, "password":password])
.responseJSON { response in
switch response.result {
case .Success(let JSON):
//do json stuff
case .Failure(let error):
print("\n\nAuth request failed with error:\n \(error)")
completion(result: .ConnectionFailed)
}
}
}
EDITAR:
message d'échec de la demande
Error Domain=NSURLErrorDomain Code=-1001 "La demande a expiré". UserInfo={NSUnderlyingError=0x7fc10b937320 {Error Domain=kCFErrorDomainCFNetwork Code=-1001 "(null)" UserInfo={_kCFStreamErrorCodeKey=-2102, _kCFStreamErrorDomainKey=4}, NSErrorFailingURLStringKey=url, NSErrorFailingURLKey=url, _kCFStreamErrorDomainKey=4, _kCFStreamErrorCodeKey=-2102, NSLocalizedDescription=La demande a expiré. }
0 votes
Le délai d'attente ne déclenche-t-il pas également la fonction
.Failure
? Je ne l'ai jamais testé avec Alamofire, mais la plupart des autres systèmes que j'utilise se replient sur l'erreur/la défaillance comme cela. Qu'avez-vous testé ?0 votes
Allendar, vous avez raison, c'est ma faute si je ne l'ai pas mentionné. J'ai modifié ma question.
2 votes
L'objet réponse contiendra le statut HTTP. S'il s'agit d'un état 408 (408 Request Timeout), vous pouvez le vérifier à l'intérieur de la balise
.Failure
et le traiter de manière appropriée. Il existe probablement même des macros pour les états http, ce qui vous permet de vérifier simplement quelque chose commeHTTP_STATUS_408
comme un entier de remplacement.