(Réglé) NSMutableURLRequest timeoutInterval
Bonjour à tous.
J'effectue une requête sur une URL et j'aimerais qu'au bout de 20 secondes par exemple, ma requête s'arrête et affiche un message d'erreur de réseau, seulement à ce moment la, après mes 20 secondes ma loadingView tourne toujours (comme si la requête s'exécutait toujours)
Voila mon code:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
loadingView = [[UIView alloc] initWithFrame:CGRectMake(75, 200, 170, 170)];
loadingView.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.5];
loadingView.clipsToBounds = YES;
loadingView.layer.cornerRadius = 10.0;
actview = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
actview.frame = CGRectMake(65, 20, actview.bounds.size.width, actview.bounds.size.height);
[loadingView addSubview:actview];
loadingLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 80, 140, 22)];
loadingLabel.backgroundColor = [UIColor clearColor];
loadingLabel.textColor = [UIColor whiteColor];
loadingLabel.adjustsFontSizeToFitWidth = YES;
loadingLabel.text = @Téléchargement des annonces. Veuillez patientez svp...;
loadingLabel.lineBreakMode = NSLineBreakByWordWrapping;
loadingLabel.numberOfLines=0;
loadingLabel.textAlignment = NSTextAlignmentCenter;
[loadingLabel sizeToFit];
[loadingView addSubview:loadingLabel];
[self.view addSubview:loadingView];
[actview startAnimating];
[self getAllOffers];
}
return self;
}
- (void)getAllOffers {
NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@%@", @http://www.myurl.com/monscript.php]];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
request.timeoutInterval = 20.0;
//Some code
}
Merci d'avance
Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Je fais ça comme cela
(Faut p'tet nous en dire un peu plus là , plutôt que nous laisser deviner )
Ouais, enfin, perso, c'est connectionError que je lirais plus que error.
Pareil, tu créées un NSError *erreur, mais tu ne la lis pas pour vérifier ta sérialization.
Toutes tes NSError ne vont pas se répercuter dans error parce que tu l'as décidé, hein !
J'ai pas compris, ce que tu as voulu dire
Déjà , je ferais :
@Ben ce que veux dire @Larme c'est que tu as deux objets erreurs dans ton bloc et tu traite qu'un seul.
1. connectionError : C'est l'objet erreur renvoyée par la méthode de NSURConnection sendAsynchro... si connectionError != nil ( par exemle un time out, pas de connexion internet,...)
2. le deuxième objet erreur est celui que tu as créer :
cette objet vas te renvoyer les erreurs oar rapport a la méthode JSONobject..... donc une erreur de parsing json.
tout simplement il faut traiter les deux
Merci Larme cela fonctionne.
J'aimerais savoir ce que contient NSError, afin d'adapter en fonction. C'est un dictionnaire ?
Je voudrais faire une condition du genre (if Code == 1009) afficher "Pas de connexion réseau".
D'ailleurs savez vous me dire les différents code d'erreur ainsi que les erreurs correspondantes svp ?
C'est un truc "assez générique". Mais y'a le [error code], etc.
Bon j'ai trouvé comment faire mon if, mais la doc ne liste pas les différentes erreurs possibles, j'aimerais bien si quelqu'un a ou à défaut de toutes les avoir, avoir les plus courantes
Et si ça ne suffisait pas, y'a évidemment l'article de NSHipster sur le sujet.
Donc c'est pas les infos qui manquent.
Merci, mais je me vois mal faire 44 if avec toutes les erreurs existantes.
Y'a pas moyens d'avoir les 5 (ou 10 maximum) erreurs les plus fréquentes s'il vous plait ?
Sachant que j'ai déjà :
-1009: NSURLErrorNotConnectedToInternet
-1001: NSURLErrorTimedOut