使用 AFNetworking 解析布尔响应

Posted

技术标签:

【中文标题】使用 AFNetworking 解析布尔响应【英文标题】:Parse Boolean Response using AFNetworking 【发布时间】:2019-04-21 12:56:29 【问题描述】:

我在我的 Swift 应用中使用 AFNetworking。我使用AFHTTPRequestSerializer 发出POST 请求并使用AFHTTPResponseSerializer 接收响应。 HTTP 状态码是 200,我得到了成功的响应。

但是,我无法解析布尔响应。在 Postman 上,响应为布尔值(真或假),但我无法在我的代码中识别响应对象类型。请参阅显示响应对象的附图。

对邮递员的回应

尝试如下解析,但IF条件不满足。

if let isSuccess = response as? Bool 
     print(isSuccess)

【问题讨论】:

只是出于好奇,如果您的应用是用 Swift 编写的,为什么不使用 Alamofire? 刚习惯使用 AFNetworking :) 另外,这是一个团队项目,不能自己做决定。 你能打印响应并分享输出吗?您可以分享 AFNetworking 推断除 Boolean 之外的其他类型的代码吗? @Kamran:在打印响应时,我得到: medium.com/sroze/… 【参考方案1】:

服务器将“真”或“假”作为 JSON 发送,这本质上是无效的 JSON。从今以后,如果我尝试使用AFJSONResponseSerializer,它会报错,因为返回的 JSON 格式不正确。

所以我不得不使用AFHTTPResponseSerializer 将响应返回为Data。然后我将此Data 转换为String 以检索“真”或“假”文本。

if let isSuccessData = response as? Data 
    if let isSuccessText = String(data: isSuccessData, encoding: .utf8) 
        print(isSuccessText)
    

【讨论】:

【参考方案2】:

看起来您的response 对象的类型是Any?。也许尝试以安全的方式将其转换为布尔值:

if let response = response as? Bool 
    // Do something with the response

在 if 语句中放置一个断点,以便于查看条件是否满足。

【讨论】:

以上是关于使用 AFNetworking 解析布尔响应的主要内容,如果未能解决你的问题,请参考以下文章

AFNetworking 3.0 使用详解 和 源码解析实现原理

无法使用 AFNetworking Objective-C 获取 XML 响应的内部节点

IOS AFN (第三方请求)

iOS开发之AFN的基本使用

AFN2.0到3.0的迁移

AFN默认请求和响应的处理