【问题标题】:How do I add some default parameters when using RestKit and RKObjectManager?使用 RestKit 和 RKObjectManager 时如何添加一些默认参数?
【发布时间】:2012-07-12 15:37:40
【问题描述】:

我正在使用 RestKit、RKObjectManager 和服务器端,用于身份验证。我需要在每个请求上发送我的身份验证令牌。有没有一种方法可以轻松地为所有请求添加它?

目前,对于 GET,我正在执行以下操作:

NSString *path = [NSString stringWithFormat:@"/%@/%i", [self pluralizedName], identifier];
path = [path stringByAppendingQueryParameters:[self appendAuthenticationToken:params]];
[[RKObjectManager sharedManager] loadObjectsAtResourcePath:path delegate:delegate];

这很好用。但是,对于 PUT,我尝试了以下方法:

[[RKObjectManager sharedManager] putObject:resource usingBlock:^(RKObjectLoader *loader) {
    loader.delegate = delegate;
    loader.params = [RKParams paramsWithDictionary:[self appendAuthenticationToken:params]];
}];

这正确发送了我的身份验证令牌,但服务器没有收到我尝试更新的资源。有谁知道这样做的正确方法吗?

【问题讨论】:

    标签: ruby-on-rails ios devise restkit


    【解决方案1】:

    这是我第一次看到将身份验证令牌附加到这样的路径。您不能将其添加到标题中吗?我有一种感觉,这是更标准的做法。

    如果你这样做,你可以在你的 RKObjectManager 提供的客户端上使用 [RKClient setValue:forHTTPHeaderField:]。

    【讨论】:

    • 这实际上是我最终做的。在服务器端,我从标头中提取令牌并将其放入参数中。
    • 好奇如何在 RestKit 2.0 中实现类似的东西?
    • 在您的 RKObjectManager 对象上有一个 HTTPClient 属性,它是您的 AFHTTPClient 挂钩。所以你可以这样做:[[RKObjectManager sharedManager].HTTPClient setAuthorizationHeaderWithUsername:password:]。查看 AFHTTPClient 了解更多详情。
    【解决方案2】:

    在 RestKit .2 中,您可以这样解决这个问题:

     [[[RKObjectManager sharedManager] HTTPClient] setAuthorizationHeaderWithToken:self.user.token];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-16
      • 1970-01-01
      • 2016-12-08
      • 1970-01-01
      • 2016-09-27
      • 2021-09-10
      相关资源
      最近更新 更多