首页 > 解决方案 > AFNetworking responseObject 包含十六进制 - 我该如何检查?

问题描述

我正在开发一个应用程序和一个应用程序将与之对话的 API。我对开发应用程序方面很陌生!

尽管 API 应该始终返回有效的 JSON,但我想处理出现问题并返回 HTML 的情况(想想 DNS 搞砸了)。

我正在使用AFNetworking并且self.sessionmanagerAFHTTPSessionManager

现在,我的(非常简化的)代码说:

[self.sessionmanager GET:@"/app/api/v1/meetings/" parameters:params progress:^(NSProgress * _Nonnull downloadProgress) {

} success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {

    if ([responseObject containsObject:@"status"]) {
        // Do stuff  
    }
    else {
        // Do failure stuff
    }
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

    // Do failure stuff
    return;
}];

问题是,如果我使用 HTML 页面而不是 JSON 到达成功函数,我会得到一个responseObject十六进制的,当我调用时,containsObject我会得到一个NSInvalidArgumentException发送到实例的无法识别的选择器。

我尝试在调用周围放置一个@try @catch 块containsObject,但它似乎没有捕捉到异常。

如何检查responseObjectJSON 响应中的对象是否有效,以避免在containsObject需要时调用?

标签: iosxcodeafnetworking

解决方案


推荐阅读