ios - 请求失败 : unauthorized (401) - AFNetworking iOS

标签 ios objective-c cookies afnetworking-2

我正在尝试进行网络服务调用,我在其中发送一些输入数据并获取 cookie。对于后续通话,我使用从上次通话中获得的 cookie 并调用新电话。但不幸的是我得到了 401 错误。但是当我在另一个系统中尝试这个时,我得到了回应。

Error Domain=AFNetworkingErrorDomain Code=-1011 "Request failed: unauthorized (401)" UserInfo=0xb469a60 {NSErrorFailingURLKey=https://<base url>/<tenant>/<resource>, AFNetworkingOperationFailingURLResponseErrorKey=<NSHTTPURLResponse: 0xb550b60> { URL: https://<base url>/<tenant>/<resource> } { status code: 401, headers {
    "Cache-Control" = private;
    "Content-Length" = 0;
    Date = "Wed, 04 Dec 2013 08:55:47 GMT";
    Server = "Microsoft-HTTPAPI/2.0";
    "X-AspNet-Version" = "4.0.30319";
    "X-Powered-By" = "ASP.NET";
} }, NSLocalizedDescription=Request failed: unauthorized (401)}

这是我的发帖请求

    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    AFHTTPResponseSerializer *serializer = [AFHTTPResponseSerializer serializer];
    serializer.acceptableContentTypes = @"application/json";

    manager.responseSerializer = serializer;
    manager.requestSerializer = [AFJSONRequestSerializer serializer];
  [manager POST:path parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
                NSURL* networkAddress = [NSURL URLWithString:baseServerURL];
                NSArray *cookies = [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookiesForURL:networkAddress];
                if (cookies.count > 0)
                {
                    [self saveCookies];
                    success(responseObject);
                }
                else
                {
                    failure([NSError errorWithDomain:@"App" code:1 userInfo:@{@"error": @"An Error Occured"}]);

                }

            } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
                [self clearCookies];
                failure (error);
            }];

我尝试重置我的模拟器并重新启动我的 xcode。但似乎没有任何帮助。但在另一个系统中,我能够获取所有数据。

PS:我是在登录后打这个电话的。所以未经授权的访问似乎是无效的。我认为这是客户端的问题。

感谢任何帮助,

最佳答案

我遇到了完全相同的问题,我发现唯一可行的方法是在登录请求的成功 block 内调用您的请求。这很糟糕,但我花了几个小时尽我所能让它工作。如果我知道怎么做,会更新。

[[AFAppDotNetAPIClient sharedClient] POST:@"users/login" parameters:loginDetails success:^(NSURLSessionDataTask * __unused task, id JSON) {

        [[AFAppDotNetAPIClient sharedClient] POST:@"posts" parameters:nil success:^(NSURLSessionDataTask * __unused task, id JSON) {


        } failure:^(NSURLSessionDataTask *__unused task, NSError *error) {


        }];

    } failure:^(NSURLSessionDataTask *__unused task, NSError *error) {


    }];

更新:是的,模拟器有点不工作......在设备上测试并且很好。

关于ios - 请求失败 : unauthorized (401) - AFNetworking iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20370986/

相关文章:

ios - titleForHeaderInSection 的文本太长

iphone - 转换字符串日期格式

ios - 与 NSTimer 一起使用时,进度条显示滴答动画而不是平滑动画

javascript - 尽管 document.cookie 包含该值,但 $cookies.get() 给出未定义

tomcat - 每个页面的多个有状态 iframe 将覆盖 JSESSIONID?

ios - 访问 iOS 7 中的所有语言?

ios - 尝试从 iOS 连接到 Meteor 时出现握手错误 9806

ios - NSDate 将时区更改为 GMT +02.00

iphone - 如何在不插入空格的情况下替换 NSString 中的字符?

javascript - 首次请求时未发送 cookie