2012-07-16 84 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