使用 RestKit 和 RKObjectManager 时如何添加一些默认参数?
Posted
技术标签:
【中文标题】使用 RestKit 和 RKObjectManager 时如何添加一些默认参数?【英文标题】:How do I add some default parameters when using RestKit and 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]];
];
这正确发送了我的身份验证令牌,但服务器没有收到我尝试更新的资源。有谁知道这样做的正确方法吗?
【问题讨论】:
【参考方案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];
【讨论】:
以上是关于使用 RestKit 和 RKObjectManager 时如何添加一些默认参数?的主要内容,如果未能解决你的问题,请参考以下文章
一起使用 Realm.io 和 RestKit 时的属性数据类型