AFNetworking
是否有可能考虑API
状态代码?
调用返回200个可以正常的HTTP代码,但状态代码为406,表示失败。
即使API调用失败,也会调用AFNetworking
成功块。
有解决方案吗?
代码:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSString *APICallURL = [NSString stringWithFormat:@"%@/%@", SERVER_URL, @"something.php"];
[manager GET:APICallURL parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
if (success) {
success();
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
if (failure) {
failure(error);
}
}];
答案 0 :(得分:2)
X-API-Status-Code
是完全非标准的标头(根据定义,实际上以X-...
开头的任何标头)。
该标头是您的特定服务器选择报告API状态代码的专有方式。它可以选择任何其他专有标头来执行此操作,也可以将其称为X-API-ReturnCode
或其他。
所以我怀疑AFNetworking
是否会原生支持这一点。
但您可能create your own AFURLResponseSerialization
subclass and implement validateResponse
,以便您的代码检查此专有标头并采取相应措施。
答案 1 :(得分:1)
它不会从服务器到达任何故障状态代码的故障阻止。对于AFNetworking,网络调用成功,并带有来自服务器的错误代码。
只有当我们无法成功完成网络通话时才会出现故障阻止 1)超时错误 2)服务器关闭而无法到达 3)网络丢失等
解决方案是我们应该在成功块中检查网络呼叫的状态代码并识别来自服务器的错误响应