2013-07-30 50 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]; 

我不知道这是否是“正确”的方式来做到这一点,但它绝对适合你!