简体   繁体   中英

The Operation couldn't be completed. (Cocoa error: 3840.)

I am trying to parse JSON for an ios 6 app, but can't seem to get it to work. I have scoured tons of forums but haven't found a solution that works, that I understand enough to implement, or that applies.

I apologize if there is one that I missed.

First I have a test WebService that as far as I can tell returns valid JSON

http://thetrouthunter.com/SVLocationsAPI.php

Second, here is my 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"];
}

The ls NSLog function is printing out the error: "The operation couldn't be completed. (Cocoa error: 3840.)"

I can't figure out why this is the case. I have tried all sorts of things.

You are adding %@&format=json&nojsoncallback=1 to the URL in connectToService: , and that new URL results in a webpage, not the JSON you expect (ie http://thetrouthunter.com/SVLocationsAPI.php&format=json&nojsoncallback=1 ).

It might be useful to log the actual result from the HTTP request so that you can debug this until you get JSON (ie prior to calling the serialization functions).

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM