应用程序在设备上调试时 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 调用未获取数据的主要内容,如果未能解决你的问题,请参考以下文章

使用 React 应用程序调用 REST API 时出错

调试器在解析 Rest API 响应 HttpClient、Xamarin Forms 时停止

如何在我的 Django REST api 上调试启用 CORS

在真正的 Android 设备上调试 Spring RestTemplate 真的很慢

仅在 REST API 调用上的 Spring Boot 404

通过 SpringBoot 调用 REST api 时 POST 不支持异常