tipsywacky
tipsywacky

Reputation: 3464

How to use json data from localhost in objective-c?

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    NSURL *site_url = [NSURL URLWithString:[NSString stringWithFormat:@"%@/json/data/post?sid=%@", SECURE, PASSCODE]];

    NSData *jsonData = [NSData dataWithContentsOfURL:site_url];
    NSError *error = nil;
    NSDictionary *dataDictionary = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:&error];

    self.items = dataDictionary;


}

I am trying to parse json data. It works fine with data from the live server. However, when I change the link to http://localhost:8090. It stops working.

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'data parameter is nil'

I can access it from the data from the web browser. Does anyone know why is that?

Upvotes: 1

Views: 1044

Answers (2)

jcesarmobile
jcesarmobile

Reputation: 53341

Does it work on emulator and not on a real device?

You should never use localhost when developing apps, use the local IP for the server instead. Localhost is the machine who make the call to the server. When you try on the emulator and you have the server on the same machine it works because they are the same. But when you try on a real device, localhost is the device, and the device doesn't have a server installed, so it will fail. BTW, to test on a real device, it has to be connected to the same network.

Upvotes: 1

Lithu T.V
Lithu T.V

Reputation: 20021

What you need here is to implement the NSURLConnection and receive data from it

Check out this

NSURL *site_url = [NSURL URLWithString:[NSString stringWithFormat:@"%@/json/data/post?sid=%@", SECURE, PASSCODE]];
NSURLRequest *req = [NSURLRequest requestWithURL:site_url];
NSURLConnection *con = [[NSURLConnection alloc] initWithRequest:req delegate:self];
[con start];

and from the delegates get the response

this document can help you a lot in this

Upvotes: 1

Related Questions