我有一个使用 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 将为服务器提供正确的值,但不会包含令牌。