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