Frage

Ich habe versucht, dies für Wochen, um herauszufinden, und ich immer noch nichts. Ich bin mit dem ASIHTTPRequest und ive gesendet erfolgreich die Daten an einen Server und jetzt muss ich die Antwort XML erhalten, analysieren sie und die Elemente zu jedem markierten NSString speichern, so kann ich sie an den Server senden. Hat jemand eine Idee hat, wie dies zu tun?

War es hilfreich?

Lösung

Aus im Wie Seite nutzen zu können, denke ich, was Sie tun möchten, ist Methoden zu implementieren, die aufgerufen werden können, wenn die Anforderung abgeschlossen ist. Zum Beispiel, sagen Sie eine Methode done:, die Sie genannt werden möchten, wenn Ihre Anfrage abgeschlossen ist. Sie können diese Methode als „fertig“ Selektor auf Antrag gesetzt:

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

Dann später implementieren Sie die done: Methode:

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

Das ist alles, vorausgesetzt, Sie sind die Anforderungen asynchron sind zu senden; wenn Sie synchrone Anrufe verwenden, können Sie nur die responseString Eigenschaft auf Wunsch verwendet werden.

Andere Tipps

Hier finden Sie eine Kopie einer XML-Bibliothek für das iPhone, wenn Sie andere haben als trivial XML-Parsing Bedürfnisse.
Ich habe vor Googles GDataXMLNode dafür verwendet, aber ich würde wahrscheinlich KissXML für die zukünftige Arbeit, weil es näher NSXML ist (die Apple-Bibliothek, die leider nicht für die iPhone versenden).

Hier ist ein Weg, um die Antwort zu parsen, hier suche ich Fehler Sie in der Regel von einem Rails-Server sehen könnten, entlang der Linien von:

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

Sie sehen, dass ich das ‚Antrag‘ Objekt wieder aus der Bibliothek, und ich füttere die Antwortzeichenfolge in eine 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];

Das zurückgegebene Array enthält hier eine Liste von Knoten, die diesen Pfad in der XML übereinstimmen. Wenn Sie mit XPath nicht vertraut sind, ist es nicht schwer zu lernen, und nützlich für die Daten aus einer XML-Antwort zu ziehen. Aufrufe String gegen das Element in dem Array zurückgegeben wird den Text zwischen den Elementen in dem obigen Beispiel zurück.

Sie können natürlich bevölkern ein Wörterbuch, usw. mit den zurückgegebenen XML-Daten. Sinn machen?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top