应用程序在设备上调试时 REST API 调用未获取数据
Posted
技术标签:
【中文标题】应用程序在设备上调试时 REST API 调用未获取数据【英文标题】:REST API call not getting Data when apps is debugging on device 【发布时间】:2013-11-18 13:07:15 【问题描述】:我正在通过以下方式在我的应用程序中调用 Rest API
-(NSArray*)parse_Data_From_URL:(NSString*)URL
NSURL *myURL = [[NSURL alloc]initWithString:URL];
// we'll receive raw data so we'll create an NSData Object with it
NSData *myData = [[NSData alloc]initWithContentsOfURL:myURL];
// now we'll parse our data using NSJSONSerialization
id myJSON = [NSJSONSerialization JSONObjectWithData:myData options:NSJSONReadingMutableContainers error:nil];
// typecast an array and list its contents
NSArray *jsonArray = [NSArray new];
jsonArray = (NSArray *)myJSON;
// NSLog(@"json floor plan imageTite --- %@",jsonArray);
return jsonArray;
当我在 iPad 模拟器上运行我的应用程序时,我的代码运行良好,但是当我在 设备 上运行应用程序时,它 API 响应 得到空值并且应用程序正在运行终止。
【问题讨论】:
1)NSArray *jsonArray = [NSArray new];
是不必要的,因为您在它之后立即将 myJSON
分配给它。 2) 将myJSON
类型转换为NSArray
不会自动将对象转换为数组(例如,您可能会得到一个字典)。 3)只需在反序列化后设置一个断点并检查对象和任何错误。
您确认您的设备有互联网连接吗?
Y 我的设备有互联网连接。
【参考方案1】:
您不应忽视可能存在错误的事实:
-(NSArray*)parse_Data_From_URL:(NSString*)URL
NSURL *myURL = [[NSURL alloc]initWithString:URL];
// we'll receive raw data so we'll create an NSData Object with it
NSData *myData = [[NSData alloc]initWithContentsOfURL:myURL];
// now we'll parse our data using NSJSONSerialization
NSError *err = nil;
NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:myData options:NSJSONReadingMutableContainers error:&err];
if (err)
// do something about error
NSLog("Error retrieving data: %@", err);
// this will be nil if there is an error. May want to consider adding NSError ** to parse_Data_From_URL parameters
return jsonArray;
【讨论】:
以上是关于应用程序在设备上调试时 REST API 调用未获取数据的主要内容,如果未能解决你的问题,请参考以下文章
调试器在解析 Rest API 响应 HttpClient、Xamarin Forms 时停止
如何在我的 Django REST api 上调试启用 CORS
在真正的 Android 设备上调试 Spring RestTemplate 真的很慢