我正在连接到一个API,当返回错误时将返回以下内容:
{
"success": false,
"reason": "Could not authenticate successfully with given credentials",
"errorCode": "invalidCredentials"
}
它有Content-Type
application/json;charset=UTF-8
和Status Code
200
。
目前,当我进行网络呼叫时,我的成功块必须弄清楚它是否得到了实际的成功响应或上述错误。然而,如果它得到如上所述的响应(其中success = false),是否有可能让它调用失败块?
注意:所有错误回复的格式与上面的success
,reason
和errorCode
字段相同。
如果需要,我可以提供一些AFNetworking
代码,但我真的只是在寻找一些如何做到这一点的指针(也许是小代码示例)。
答案 0 :(得分:0)
您可以继承AFHTTPResponseSerializer
并实施validateResponse:data:error:
来检查回复。
使用自定义AFHTTPResponseSerializer
时要小心。使用不一致的Web-API时出现问题(我发现很多)。您需要在代码中解决某处中的这些不一致问题。 AFHTTPResponseSerializer
在代码中引入了另一层抽象,在决定如何解决不一致问题时会使事情变得复杂。
答案 1 :(得分:0)
您可以继承AFHTTPRequestOperationManager类并覆盖其GET / POST方法,以便成功块已经处理了预定义的格式。