2013-03-20 3 views
8

Ich versuche, JSON für eine iOS 6-Anwendung zu analysieren, aber es scheint nicht zu funktionieren. Ich habe Tonnen von Foren durchforstet, aber keine Lösung gefunden, die funktioniert, die ich genug verstehe, um sie umzusetzen, oder das trifft zu.Der Vorgang konnte nicht abgeschlossen werden. (Cocoa-Fehler: 3840.)

Ich entschuldige mich, wenn es einen gibt, den ich vermisst habe.

Zuerst habe ich einen Test WebService haben, soweit ich zurückkehrt gültig JSON

http://thetrouthunter.com/SVLocationsAPI.php

Zweite hier sagen kann, ist mein Objective-C-Code:

+ (NSDictionary *)connectToService:(NSString *)query 
{ 
    NSError *error = nil; 

    query = [NSString stringWithFormat:@"%@&format=json&nojsoncallback=1", query]; 
    query = [query stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

    NSData *jsonData = [[NSString stringWithContentsOfURL:[NSURL URLWithString:query] encoding:NSUTF8StringEncoding error:nil] dataUsingEncoding:NSUTF8StringEncoding]; 

    NSDictionary *results = jsonData ? [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers|NSJSONReadingMutableLeaves error:&error] : nil; 

    NSLog(@"locations: %@", results); 

    if (error) 
     NSLog(@"[%@ %@] JSON error: %@", NSStringFromClass([self class]), NSStringFromSelector(_cmd), error.localizedDescription); 

    return results; 
} 

+ (NSArray *)userLocation { 
    NSString *request = [NSString stringWithFormat:@"http://thetrouthunter.com/SVLocationsAPI.php"]; 
    return [[self connectToService:request] valueForKeyPath:@"locations.location"]; 
} 

Die ls NSLog Funktion wird der Fehler ausgedruckt: "Die Operation konnte nicht abgeschlossen werden. (Cocoa-Fehler: 3840.)"

Ich kann nicht herausfinden, warum das der Fall ist. Ich habe alle möglichen Dinge ausprobiert.

Antwort

4

Sie fügen %@&format=json&nojsoncallback=1 der URL in connectToService: hinzu, und diese neue URL führt zu einer Webseite, nicht zu dem von Ihnen erwarteten JSON (d. H. http://thetrouthunter.com/SVLocationsAPI.php&format=json&nojsoncallback=1).

Es kann nützlich sein, das tatsächliche Ergebnis von der HTTP-Anfrage zu protokollieren, so dass Sie dies debuggen können, bis Sie JSON erhalten (d. H. Vor dem Aufruf der Serialisierungsfunktionen).

+0

Großartig, dass gearbeitet. THANKS! Aber wenn ich bereit bin, Parameter per Abfragezeichenfolge hinzuzufügen, wie würde ich das tun? – dherrin79

+0

Sie können Parameter zur URL hinzufügen, stellen Sie einfach sicher, dass die Ausgabe Ihres Skripts JSON ist :) – abellina

+0

Ich sehe. Ich habe nicht einmal bemerkt, dass meine Site auf die Homepage umgeleitet wurde, als die Abfragezeichenfolge angewendet wurde. Vielen Dank für Ihre Hilfe und super schnelle Antwort. – dherrin79