2013-07-30 70 views
0

我試圖發送帶有此格式的PUT請求:添加網址參數,以RestKit RKObjectManager putObject

http://server.com/api/tag/:tagId?extra1=abc&extra2=def

RKObjectManager *manager = [RKObjectManager managerWithBaseURL:@"http://server.com"]; 

[manager.router.routeSet addRoute:[RKRoute routeWithClass:[Tag class] pathPattern:@"/api/tag/:tagId" method:RKRequestMethodPut]]; 

Tag *tag = [[Tag alloc] initWithName:name andId:tagId]; 
[manager putObject:tag path:nil parameters:@{@"extra1":@"abc", @"extra2":@"def"} 
      success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) { 
       [delegate onRequestSuccess:request withData:tag]; 
      } 
      failure:^(RKObjectRequestOperation *operation, NSError *error) { 
      }]; 

[delegate onRequestStart:request]; 

但得到的參數放入請求的主體,而不是URL的正如它在GET或DELETE請求中所做的一樣。 POST請求也會發生同樣的情況。

感謝您的任何建議。

回答

0

下面是我在過去的解決此問題的工作:

而不是使一個路由,只需手動創建網址路徑,直接輸入你的參數轉換成字符串:

NSString *urlPath = [NSString stringWithFormat: 
         @"/api/tag/:tagId?extra1=%@&extra2=%@", @"abc", @"def"]; 

然後使用的path代替parameters打電話給你putObject要求:

[manager putObject:tag path:urlPath parameters:nil 
      success:^(RKObjectRequestOperation *operation, RKMappingResult *mappingResult) { 
       [delegate onRequestSuccess:request withData:tag]; 
      } 
      failure:nil]; 

我不知道這是否是「正確」的方式來做到這一點,但它絕對適合你!