2012-07-16 139 views
2

我有一个iOS应用程序使用RestKit来与RESTful Rails服务器通信。服务器使用基本会话令牌进行用户验证。我想把这个标记附加到使用RKObjectManager方法发送的每个请求上。RestKit - 向所有请求添加参数

我已经试过为了使用下面的方法创建NSManagedObject的范畴超载:

- (void)willSendWithObjectLoader:(RKObjectLoader *)objectLoader 

这工作正常,但我看不出有任何附加到对象装载机则params的方式。我甚至已经尽力重新对对象进行了重新设置,但如果没有使用转义字符发送它,则无法做到这一点。例如,下面的代码会给我对象在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 = obj会给服务器提供正确的值,但不会包含令牌。

+0

我已经回答了同一个问题[here](http://stackoverflow.com/questions/11455427/how-do-i-add-some-default-parameters-when-using-restkit-and-rkobjectmanager/11465562 #11465562) – 2012-07-16 14:34:46

+0

我会被诅咒的。我没有找到答案,我已经做了我公平的谷歌搜索份额。 – Rick 2012-07-16 16:53:12

回答

4

如何将它添加到queryParams?

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

其中queryParams是添加令牌的NSMutableDictionary。

+1

那你知道些什么。最简单的解决方案往往容易被忽视:) – Rick 2012-07-16 13:35:34