【问题标题】:Code=-1011 "Request failed: unauthorized (401)" AFNetwoking代码=-1011 “请求失败:未经授权 (401)” AFNetoking
【发布时间】:2015-07-21 19:54:17
【问题描述】:

我正在尝试发出一个 GET 请求,并设置一个名为

的标头

X-用户授权 但我收到以下错误:

代码=-1011“请求失败:未授权 (401)”AFNetwoking

 -(void) listarGruposDeDistancia
    {
        NSMutableArray *listaDistancias = [[NSMutableArray alloc]init];
        AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
        manager.requestSerializer = [AFHTTPRequestSerializer serializer];
        manager.requestSerializer.allowsCellularAccess = YES;
        [manager.requestSerializer setValue:@"valueHere" forHTTPHeaderField:@"X-User-Authorization"];

       AFSecurityPolicy *policy = [AFSecurityPolicy policyWithPinningMode:AFSSLPinningModeNone];
        policy.allowInvalidCertificates = YES;
        manager.securityPolicy = policy;

        NSString *url = @"https://url:3000/api/v0.1/groups/";

        [manager GET:url
          parameters:nil
             success:^(AFHTTPRequestOperation *operation, id responseObject) {

                NSLog(@“success”);
                 }
                 [self concluirListaDistancias:listaDistancias];

             } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
                 NSLog(@"Error: %@", error);
             }];
    }

【问题讨论】:

    标签: ios objective-c afnetworking


    【解决方案1】:

    您肯定会从服务器返回 401 - 这意味着您没有根据服务器的要求构建适当的 HTTP 请求和身份验证。查看(服务提供商或在您的情况下似乎是本地打包产品)的文档,然后使用 等工具构建适当的 HTTP 请求。如果您确信原始请求按预期工作,请使用 requestb.in 之类的内容来测试您的 AFNetworking 请求。

    不管怎样,X-User-Authorization 不是预配置的授权标头(X- 前缀意味着它是自定义标头属性)。也许您正在寻找更像Authorization: Bearer <token> 的东西?

    【讨论】:

    • OK - 然后在 Postman 中针对 requestbin 进行相同的 API 调用,然后使用 AFNetworking 进行另一个调用。比较请求并查看您需要对 AFNetworking 请求执行哪些操作来修复它。
    • requestbin 接受任何 HTTP 请求 - 去那里并生成一个存储桶。交换 Postman 和您的应用项目中的 URL,然后将它们发送到那里。
    • 如果您的端点在 Internet 上(不是本地),您也可以使用 Runscope。这是一个文档,其中包含有关如何将 Runscope URL 与 AFNetworking 一起使用的具体说明——一个捕获所有请求和响应数据的即时代理,因此您可以查看客户端请求的外观以及从目标 API 返回的相应响应。 runscope.com/docs/code-examples/ios
    • 不同之处在于,在 iOS 中服务器返回 { status code: 401, ` "Www-Authenticate" = "Basic realm=\"Restricted\""; ` 在标题中......但我不知道为什么
    • 不要看服务器的响应——你需要比较工作和不工作的 request 并向后工作。
    猜你喜欢
    • 2017-11-13
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 2012-11-27
    • 2018-04-23
    • 1970-01-01
    • 2012-05-03
    相关资源
    最近更新 更多