2010-12-03 11 views
1

Je reçois une liste en utilisant url en l'analysant à l'aide de l'analyseur xml. Parfois, le serveur ne fonctionne pas correctement. alors comment donner une alerte quand le serveur ne fonctionne pas correctement. J'ai donné le code ci-dessousComment afficher une alerte lorsque le serveur ne fonctionne pas correctement?

-(NSMutableArray*)getCustomerList:(NSString *)count category:(NSString *)aCategory alphabetic:(NSString *)alphabeticValue favorite:(NSString *)isFavoriteString 
{ 
    [self updateStatus]; 
    if (internetConnectionStatus == NotReachable) 
    { 

     UIAlertView *reachbleAlert = [[UIAlertView alloc] initWithTitle:@"message" 
                   message: @"No network available alert" 
                   delegate:self 
                 cancelButtonTitle:@"Ok" 
                 otherButtonTitles: nil]; 
     [reachbleAlert show]; 
     [reachbleAlert release]; 
     return 0; 
    } 
    else 
    { 

     NSString *[email protected]"http:getCustomerList.jsp"; 
     urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
     [dataParser parseXMLFileAtURL:[NSURL URLWithString:urlString]]; 
     NSMutableArray *list =[dataParser getCustomerListFromParser]; 
     printf("\n url for Customer List%s",[urlString UTF8String]); 
     printf("\n Customer List %d",[list count]); 
     return list; 
    } 
} 

Je paramètre envoie à URL pour retourner la liste repctive quand il retourne zéro Je dispalying alerte contrôleur de vue.

mais lorsque le serveur ne fonctionne pas correctement, alors comment afficher cette alerte.

Aidez-moi s'il vous plaît à m'en sortir.

Merci, Madan mohan.

Répondre

0

À mon avis: D'abord effectuer l'opération de demande au serveur pour toute réponse.

Deuxièmement Saisissez la réponse reçue dans une variable BOOL.

Enfin, lorsque votre variable BOOL est définie sur VRAI, effectuez l'opération souhaitée [Tels que l'analyse ..] Sinon, affichez simplement un message d'erreur avec un message d'erreur approprié.

0

Je suis sûr qu'il y a une façon parfaitement agréable de le faire avec parseXMLFileAtURL. Je ne fais pas comme ça. Ce que je sais, c'est que si vous utilisez the excellent ASIHTTPRequest library pour faire une demande asynchrone, tout cela est pris en charge pour vous. Vous créez deux méthodes de délégué, RequestFinished et RequestFailed, et l'un d'eux sera appelé lorsque le résultat est clair.

Dans RequestFinished, vous devez analyser la partie chaîne de l'objet réponse.

Dans RequestFailed, vous affichez l'alerte, puis décidez comment procéder à partir de là.

+0

Pouvez-vous l'expliquer clairement? Je vous remercie. –

+0

Je ne suis pas sûr de ce que vous voulez que je vous explique. Si vous utilisez la bibliothèque que j'ai pointée et que vous faites passer vos requêtes http, vous aurez accès à ces deux méthodes de délégation. Si vous n'utilisez pas cette librairie - ce qui est bien - alors je suis sûr qu'il y a une autre façon de gérer le timeout ou le message d'erreur ou quoi que ce soit. Je ne sais juste pas. J'aime juste la bibliothèque parce qu'elle économise beaucoup de tracas. Si vous voulez en savoir plus, cliquez sur le lien. –

0

pour cette u créer la requête asynchrone usingNSURLRequest

NSURL *theURL=[[NSURL alloc]initWithString:@"**YOUR URL**"]; NSMutableURLRequest *theRequest = [[NSMutableURLRequest alloc] initWithURL:theURL]; [theRequest setTimeoutInterval:150]; [theURL release]; mURLConnection=[[NSURLConnection alloc]initWithRequest:theRequest delegate:self]; [theRequest release]

puis dans leur méthode déléguée

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 

{

if (mResultData == nil) //mResultData is NSData(member variable) 
    mResultData = [[NSMutableData alloc] init]; 
[mResultData setLength: 0]; 

}

- (void) connexion: (NSURLConnection *) connexion didReceiveData: (NSData *) données {

[mResultData appendData:data]; 

}

// cette méthode appelle si leur est un problème de côté serveur - (void) connexion: (NSURLConnection *) connexion didFailWithError: erreur (NSError *) {
[mResultData release]; mResultData = nil; [version mURLConnection]; mURLConnection = nil;
// ici l'erreur UIAlertView * theAlert = [[UIAlertView alloc] initWithTitle: message kAlertTitle: [erreur localiséeDescription] délégué: nil cancelButtonTitle: @ "Ok" otherButtonTitles: nil]; [exposition theAlert]; [la publication theAlert]; }

  • (void) connectionDidFinishLoading: connexion (NSURLConnection *) {

    // ici u peut envoyer mResulData pour l'analyse syntaxique // créer NSXMLParser

}

+0

Je sais cela, je pense que, Y at-il une méthode comme didFailWithError dans l'analyseur xml pour connaître son comportement. –

+0

J'ai manipulé ceci en utilisant un booléen dans l'analyseur. –