2

我有一个使用 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];

但是那里返回的对象打算立即用作参数,因此以下代码不起作用

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

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

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

4

1 回答 1

4

将它添加到 queryParams 怎么样?

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

其中 queryParams 是一个 NSMutableDictionary,您可以在其中添加您的令牌。

于 2012-07-16T13:21:58.963 回答