2013-10-28 7 views
2

Мое приложение вызывает базовый PHP-скрипт, который выводит данные JSON.HTTP GET запрос, работающий в iOS-симуляторе, но не на устройстве iPhone

Я звоню мой PHP скрипт так:

NSString *buildURL = [NSString stringWithFormat: @"http://xxxx.com/api.php?action=authenticate_user&email=%@&password=%@&deviceToken=%@", _emailAddress, _password, deviceToken]; 
NSURL *url = [NSURL URLWithString: buildURL]; 
NSData *data = [NSData dataWithContentsOfURL:url]; 
NSString *ret = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 

// Parse the result 
NSString *ret2 = [ret stringByReplacingOccurrencesOfString:@"null" withString:@""]; 
NSError* error; 
NSDictionary *JSON = 
[NSJSONSerialization JSONObjectWithData: [ret2 dataUsingEncoding:NSUTF8StringEncoding] 
           options: NSJSONReadingMutableContainers 
            error: &error]; 

NSString* status = [JSON objectForKey:@"status"]; 
NSString* email = [JSON objectForKey:@"email"]; 
NSString* userID = [JSON objectForKey:@"userID"]; 
NSString* agentID = [JSON objectForKey:@"agentID"]; 
NSString* picture = [JSON objectForKey:@"picture"]; 

По какой-то причине при выполнении этого кода на моем iPhone все переменные (null), но в тренажере я получить правильные данные.

Выход моего PHP сценария:

{"status":"1", "agentName":"Bill", "picture":"http://xxxx.com/thumb_ad1-8908968097.jpg", "departmentName":"", "email":"[email protected]", "agentID":"513", "userID":"3"}null 

Любые идеи, что я делаю неправильно?

+0

Почему в конце вывода вашего PHP-скрипта есть бит 'null'? –

+0

Его скрипт php, который выводит его, но я считаю, что это не имеет значения, поскольку он работает в симуляторе. – Alosyius

+1

Хорошее эмпирическое правило: никогда не предполагайте, что только потому, что что-то работает в симуляторе, оно будет работать на устройстве. Вы должны исправить это, поскольку это недействительно JSON. –

ответ

3

Я уверен, что ваш веб-сервис не является живым (ваш веб-сервис на локальном сервере делает их глобальными).

Устройство не связано с вашим текущим сервером php, откуда вы вызывали веб-сервис, из симулятора он выводит вывод, потому что mac os подключен к серверу.

Смежные вопросы