有没有可能AFNetworking
也考虑了API
状态码?
Call返回200 HTTP代码,表示正常,但状态代码为406,表示失败。
即使AFNetworking
调用失败,这也会导致调用API成功块。对此有解决方案吗?
代码:
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);
}
}];
发布于 2014-05-19 22:01:40
X-API-Status-Code
是一个完全非标准的报头(实际上,根据定义,任何以X-...
开头的报头)。
该标头是您的特定服务器选择用来报告API状态代码的专有方式。它可以选择任何其他专有头来这样做,也许叫它X-API-ReturnCode
或诸如此类的东西。
因此,我怀疑AFNetworking
是否会在本地支持这一点。
但是,你可以使用create your own AFURLResponseSerialization
subclass and implement validateResponse
,这样你的代码就可以检查这个专有的头文件,并相应地操作。
发布于 2014-05-19 22:07:22
来自服务器的任何故障状态码都不会到达故障块。关于AFNetworking,网络调用成功,并显示来自服务器的错误代码。
只有当我们不能成功完成网络呼叫时,它才会到达故障块,例如1)超时错误2)服务器关闭并且无法到达3)网络丢失等
解决方案是检查成功块中网络调用的状态码,识别来自服务器的错误响应
https://stackoverflow.com/questions/23739555
复制相似问题