使用 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 使用详解 和 源码解析实现原理