我有一个使用 RestKit 的 iOS 应用程序,以便与 RESTful Rails 服务器进行通信。服务器使用基本 session token 对用户进行身份验证。我想将此 token 附加到使用 RKObjectManager 方法发送的每个请求。
我尝试创建 NSManagedObject 的类别重载以便使用以下方法:
- (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 将为服务器提供正确的值,但不包含 token 。
最佳答案
将其添加到 queryParams 怎么样?
NSString *resourcePath = [@"/products" stringByAppendingQueryParameters:_queryParams];
其中 queryParams 是一个 NSMutableDictionary,您可以在其中添加 token 。
关于iphone - RestKit - 向所有请求附加参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11505172/