RestKit - 为所有请求附加参数

时间:2012-07-16 13:17:41

标签: iphone objective-c restkit

我有一个使用RestKit的iOS应用程序,以便与RESTful Rails服务器通信。服务器使用基本会话令牌对用户进行身份验证。我想将此标记附加到使用RKObjectManager方法发送的每个请求。

我尝试过创建NSManagedObject的Category重载,以便使用以下方法:

- (void)willSendWithObjectLoader:(RKObjectLoader *)objectLoader

这很好用,但我看不到附加到对象加载器的参数。我甚至已经远远地将对象重新序列化,但如果没有使用转义字符发送它就没有办法做到这一点。例如,以下代码将以JSON序列化形式提供对象

RKObjectMapping *serializationMapping = [[[RKObjectManager sharedManager] mappingProvider] serializationMappingForClass:[self class]];
RKObjectSerializer *ser = [RKObjectSerializer serializerWithObject:self mapping:serializationMapping];
NSObject<RKRequestSerializable> *obj = [ser serializationForMIMEType:RKMIMETypeJSON error:nil];

但是那里返回的对象打算立即用作param,所以下面的代码不起作用

[params setValue:[LCSingletonLoggedInUser sharedLoggedInUser].sessionToken forParam:@"token"];
[params setData:obj.HTTPBody forParam:@"data"];

我也尝试过setObject和setData以及obj.HTTPBody的各种组合以及obj。

实际上以任何方式将obj追加到params将始终导致它添加服务器无法处理的转义字符。设置params = obj将为服务器提供正确的值,但不包括令牌。

1 个答案:

答案 0 :(得分:4)

如何将其添加到queryParams?

NSString *resourcePath = [@"/products" stringByAppendingQueryParameters:_queryParams];

其中queryParams是您添加令牌的NSMutableDictionary。