Question

J'ai essayé de comprendre cela pendant des semaines et je reçois toujours rien. J'utilise le ASIHTTPRequest et Ive envoyé avec succès les données à un serveur et maintenant je dois obtenir le XML de réponse, analyser et enregistrer les éléments à chaque étiquette NSString je peux poster sur le serveur. Est-ce que quelqu'un a une idée sur la façon de le faire?

Était-ce utile?

La solution

De la recherche à la Comment utiliser , je pense que ce que vous voulez faire est de mettre en œuvre des méthodes qui peuvent être appelées lorsque la demande est complète. Par exemple, supposons que vous avez une done: méthode que vous voulez appeler lorsque votre demande complète. Vous pouvez définir cette méthode comme sélecteur « terminé » à la demande:

NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
ASIHTTPRequest *request = [[[ASIHTTPRequest alloc] initWithURL:url] autorelease];
[request setDelegate:self];
[request setDidFinishSelector:@selector(done:)];

Ensuite, plus tard, vous implémentez la méthode done::

- (void)done:(ASIHTTPRequest *)request
{
   NSString *response = [request responseString];
}

Ceci est tout en supposant que vous envoyez les demandes de manière asynchrone; si vous utilisez des appels synchrones, vous pouvez simplement utiliser la propriété responseString sur la demande.

Autres conseils

Obtenir une copie d'une bibliothèque XML pour l'iPhone si vous avez d'autres besoins que d'analyse syntaxique XML trivial.
Je l'ai utilisé la GDataXMLNode de Google pour cela, mais je ne serais probablement utiliser KissXML pour les travaux futurs, car il est plus proche NSXML (la bibliothèque d'Apple qui ne livre pas pour l'iphone, malheureusement).

Voici un moyen pour analyser la réponse, ici, je suis à la recherche d'erreurs que vous pouvez généralement voir à partir d'un serveur Rails, le long des lignes de:

  <errors><error>Description of what went wrong</error></errors>

Vous pouvez voir que je reçois l'objet « demande » arrière de la bibliothèque, et je nourrir la chaîne de réponse dans un GDataXMLDocument.

   GDataXMLDocument* root = [[GDataXMLDocument alloc] initWithXMLString:[request responseString] options:0 error:nil];

   // Parse the error strings
   NSArray* errors = [root nodesForXPath:@"//errors/error" error:nil];

   // What is the first error string.... etc......
   NSString* firstError = [[errors objectAtIndex:0] stringValue];

Le tableau retourné ici contient une liste de nœuds qui correspondent à ce chemin dans le fichier XML. Si vous n'êtes pas familier avec XPath, ce n'est pas difficile à apprendre, et utile pour tirer des données sur une réponse XML. Appel stringValue contre l'élément retourné dans le tableau renvoie le texte entre les éléments dans l'exemple ci-dessus.

Vous pouvez bien sûr remplir un dictionnaire, etc. avec les données XML renvoyées. Sens?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top