请求失败:未授权(401) - AFNetworking iOS

时间:2013-12-04 09:01:44

标签: 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:我在登录后拨打此电话。所以未经授权的访问似乎无效。我认为这是客户方面的问题。

感谢任何帮助,

1 个答案:

答案 0 :(得分:2)

我遇到了完全相同的问题,我发现工作的唯一方法是在您的登录请求的成功块中调用您的请求。它很糟糕,但我花了几个小时尝试一切,让它发挥作用。如果我知道如何会更新。

[[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) {


    }];

更新:是的,仿真器类型不起作用....在设备上测试并且很好。