【发布时间】:2014-07-12 09:22:50
【问题描述】:
我有一个带有 iOS 应用程序的 Django Rest Api,现在我正在测试 AFNetworking 以更改我的应用程序正在执行的 HTTP 请求,但我遇到了这个我不知道如何处理的困境,首先是 REST 标准当我收到错误时,如果发送或发生错误,我应该返回 404_BAD_REQUEST 作为状态,这没关系。当 AFNetworking 看到这个 404 时,问题就出现了。我仍然希望看到它返回的 JSON。
curl -X POST http://domain.com:8000/user-login/ -d "nick=superUser&pass_field=superPassword"
我得到 202 状态 HTTP:
{
"nick": "eddwinpaz", "rate": 30, "name": "Eddwin Paz", "avatar": "https://fbcdn-profile-a.akamaihd.net/hprofile-ak-prn2/t1.0-1/p160x160/10270540_10154074250190063_1762683854515424400_n.jpg", "id": 9}eddwinpazs-MacBook-Pro:~ eddwinpaz$
}
当我收到 404 BAD REQUEST 时,我得到:
{"message": "Invalid Username or Password"}
如果我收到 404 错误,我想获取该消息 json 标记
我有以下代码。并将其放在警报上的消息上
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *parameters = @{@"nick": @"eddwinpaz",@"pass_field":@"eddwinpaz1"};
AFHTTPRequestOperation *operation = [manager POST:@"http://domain.com/user-login/"];
[operation addAcceptableStatusCodes:[NSIndexSet indexSetWithIndex:404]];
[manager POST:@"http://domain.com/user-login/" parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject)
{
NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Login Failed"
message:@"E-mail or password are wrong, Please Try Again"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[hud hide:YES];
}];
【问题讨论】:
-
您的 NSError 中不是该消息吗?喜欢[错误用户信息]?
-
如果我使用消息:[errorlocalizedDescription] 只看到 404 BAD REQUEST 但响应仍然显示请求出了什么问题。上面的例子 {"message":"Invalid Username or Password"}
-
好的,我不明白你想做什么。为这两行添加您得到的响应:[errorlocalizedDescription] [error code]。然后添加您期望获得的内容。
-
仅供参考 - 这是 400(错误请求)错误,而不是 404(未找到页面)错误。
-
@eddwinpaz 你是如何处理这个问题的?我也有同样的问题,求分享。谢谢
标签: ios json afnetworking-2