错误代码 -1011,状态代码为 401

Posted

技术标签:

【中文标题】错误代码 -1011,状态代码为 401【英文标题】:Error Code -1011 with status code 401 【发布时间】:2015-04-18 02:11:15 【问题描述】:

我正在使用 AFNetworking 发布用户名和密码,以便获得 JSON 响应。 我很容易在 POSTMAN 客户端中获得 JSON 响应,如下图所示:

但是,每当我使用 AFNetworking 库点击相同的 URL 时:

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];

[manager POST:urlString parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) 
    NSLog(@"JSON: %@", responseObject);
 failure:^(AFHTTPRequestOperation *operation, NSError *error) 
    NSLog(@"Error: %@", error);
];

我得到的错误如下:

我什至尝试添加以下代码,但它总是给出相同的错误响应:

AFHTTPRequestSerializer *serializerRequest = [AFHTTPRequestSerializer serializer];
[serializerRequest setValue:@"application/x-www-form-urlencoded; charset=utf-8" forHTTPHeaderField:@"Content-Type"];

manager.requestSerializer = serializerRequest;

manager.responseSerializer = [AFJSONResponseSerializer serializer];

如何像在邮递员客户端中一样获得 JSON 响应。 任何形式的帮助表示赞赏。

【问题讨论】:

在失败块中添加 NSLog(@"Error: %@", operation.responseObject); ? 【参考方案1】:

如果 HTTP 响应代码 401 不在您的 acceptableStatusCodes 列表中。 AFNetworking 不会继续反序列化对象。而是创建一个 NSError 对象,这就是您所看到的输出。

这个功能可以在AFURLResponseSerialization.m:132找到。

如果您想更新您希望接受的 HTTP 代码,您可以使用:

self.acceptableStatusCodes = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(200, 200)];

否则,如果您确信请求包含 JSON 正文,您仍然可以使用密钥从 userInfo 中生成的 NSError 访问数据 AFNetworkingOperationFailingURLResponseErrorKey 并手动反序列化。

更多信息:https://github.com/AFNetworking/AFNetworking/issues/2410#issuecomment-63304245

【讨论】:

以上是关于错误代码 -1011,状态代码为 401的主要内容,如果未能解决你的问题,请参考以下文章

错误 401 贝宝

Web 服务 401:未经授权的错误

使用全局axios拦截器时如何防止出现多次401错误警告

Angular 5 无法 PUT 并出现 401 错误

带有 Keycloak 的 Spring 应用程序返回 401 错误

GCM http 401 授权错误