Je vois qu'il existe une liste de codes de statut http acceptés que je peux modifier, mais je pense que ce serait plus propre si je pouvais obtenir le code de statut http dans le bloc d'échec.
Ok, a trouvé la réponse avec l'objet opération
failure:^(AFHTTPRequestOperation *operation, NSError *error){
NSLog(@"error code %d",[operation.response statusCode]);
}];
Ok, a trouvé la réponse avec l'objet opération
failure:^(AFHTTPRequestOperation *operation, NSError *error){
NSLog(@"error code %d",[operation.response statusCode]);
}];
Dans les versions plus récentes d'AFNetworking, vous pouvez récupérer l'objet de réponse à partir de l'erreur:
[[[error userInfo] objectForKey:AFNetworkingOperationFailingURLResponseErrorKey] statusCode]
C'est pratique si vous gérez les erreurs plus loin sur la ligne et que vous ne voulez pas contourner l'objet de réponse.
Pour AFNetworking 3.0 , utilisez
failure:^(NSURLSessionTask *operation, NSError *error) {
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)operation.response;
httpResponse.statusCode;
NSLog(@"status code: %li", (long)httpResponse.statusCode);
}
NSInteger operationStatusCode = [code d'opération.error];
NSInteger httpStatusCode = operation.response.statusCode;
Si les demandes ont été annulées/inaccessibles/expirées, httpStatusCode
sera toujours 0
.
Sinon, vous pouvez identifier le problème en comprenant operationStatusCode
. C'est un objet NSError
.
operationStatusCode
sera -1009
. operationStatusCode
sera -999
.Vous pouvez vérifier tous les autres codes NSError
et leurs descriptions dans Documentation Apple
((error.userInfo[AFNetworkingOperationFailingURLResponseErrorKey])
as! HTTPURLResponse).statusCode
C'est un travail pour moi Ajouter la ligne ci-dessous à votre demande
manager.requestSerializer = [sérialiseur AFJSONRequestSerializer];