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

标签 ios json afnetworking jsonserializer

我正在使用 AFNetworking 发布用户名和密码,以便我可以获得 JSON 响应。 我很容易在 POSTMAN 客户端中获得 JSON 响应,如下面的快照所示: enter image description here

但是,每当我使用 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);
}];

我得到的错误如下: enter image description here

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

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

manager.requestSerializer = serializerRequest;

manager.responseSerializer = [AFJSONResponseSerializer serializer];

我怎样才能像 postman 客户端一样获得 JSON 响应。 感谢任何形式的帮助。

最佳答案

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

可以在 AFURLResponseSerialization.m:132 中找到此功能。

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

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

否则,如果您确信请求包含 JSON 主体,您仍然可以使用 key 访问 userInfo 中包含的 NSError 中的数据 AFNetworkingOperationFailingURLResponseErrorKey 并手动反序列化。

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

关于ios - 错误代码 -1011,状态代码为 401,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28560523/

相关文章:

json - OS X 中 xattr 的最大大小

objective-c - afnetworking - startMonitoringNetworkReachability 中的 exc_bad_access

ios - 将 cURL 请求(使用 --data-urlencode)转换为 AFNetworking GET 请求

ios - 使用 CoreData 保存包含字典的数组

ios - Alamofire 的证书、表单数据和 HTTP header 数据无效

ios - 为什么继承的变量没有在swift中初始化?

ios - 将 JSON 字符串从一个 View 传递到另一个 View

jquery - 如何阻止 iOS 文本字段自动完成干扰 jQuery 自动完成?

javascript - 绘制具有不重叠 Y 值的多条线

ios - 滚动到表格底部时如何添加 "Load more"页面