Restkit,使用 loadObjectsAtResourcePath 发送帖子数据
Posted
技术标签:
【中文标题】Restkit,使用 loadObjectsAtResourcePath 发送帖子数据【英文标题】:Restkit, sending post data with loadObjectsAtResourcePath 【发布时间】:2012-04-25 06:03:51 【问题描述】:如果我使用 restkit 发出请求,我可以使用共享客户端发送发布参数。 我怎样才能对共享对象管理器做同样的事情,当请求对象时似乎没有发布数据的功能。
要重新迭代,我希望在使用 loadObjectsAtResourcePath 时发送一些帖子数据
谢谢
【问题讨论】:
正如 jverdi 所指出的,我尝试过使用块,但块内的任何代码似乎都没有执行 [objManager loadObjectsAtResourcePath:url delegate:self block:^(RKObjectLoader* loader) DDLogVerbose(@"从 url 映射对象 %@",url); loader.objectMapping=postMapping; loader.method=RKRequestMethodPOST; RKParams *params=[RKParams 参数]; [参数 setValue:@"iPhone3u48gn39bndkthb34528dgbnjs398shbg34" forParam:@"token"]; loader.params=参数; ]; 【参考方案1】:必须使用 loadObjectsAtResourcePath 吗?这是我用来向我的服务器发送 POST 请求的方法
RKParams* params = [RKParams params];
[params setValue:@"The text" forParam:@"text"];
RKClient* myClient = [RKClient sharedClient];
[myClient post:resourceURL params:params delegate:self];
然后您会收到回复
- (void)request:(RKRequest *)request didLoadResponse:(RKResponse *)response
PS:刚刚找到这个链接:https://github.com/RestKit/RestKit/wiki/Posting-NSDictionary-as-JSON
【讨论】:
我必须使用 loadOBjectsResourcePath,因为我正在做一些 json 映射,我不确定是否可以在不使用 loadObjectsAtResourcePath 的情况下完成 json 映射。感谢您指出,但我已经成功发布数据,只是我不知道如何使用 loadObjectsAtResourcePath 我还没有尝试过这个,但是用我的方法你会得到你的“- (void)request:(RKRequest *)request didLoadResponse:(RKResponse *)response”调用,从那里你应该能够调用文档所说的 [response parsedBody]:“将解析为 JSON 的响应正文返回到一个对象中”值得一试...... RKClient* myClient = [RKClient sharedClient]; [myClient post:resourceURL params:params delegate:self]; - 不会像 loadObjectsAtResourcePath 那样解析并返回对象【参考方案2】:您可以使用块样式的对象加载器来自定义请求:
[[RKObjectManager sharedManager] loadObjectsAtResourcePath:@"/monkeys.json" usingBlock:^(RKObjectLoader* loader)
loader.objectMapping = [[RKObjectManager sharedManager].mappingProvider objectMappingForClass:[Monkey class]];
loader.method = RKRequestMethodPOST;
];
https://github.com/RestKit/RestKit/blob/master/Code/ObjectMapping/RKObjectManager.h#L374
【讨论】:
感谢 jverdi 提供的信息,但由于某种原因,我无法使用该方法。它不断抛出错误,我什至更新了我的 RestKit,因为它看起来像是最近添加的。有帮助吗? [objManager loadObjectsAtResourcePath:url delegate:self block:^(RKObjectLoader* loader) DDLogVerbose(@"从url映射对象%@",url); loader.objectMapping=postMapping; loader.method=RKRequestMethodPOST; RKParams *params=[RKParams 参数]; [参数 setValue:@"iPhone3u48gn39bndkthb34528dgbnjs398shbg34" forParam:@"token"]; loader.params=参数; ];上面的代码不行,block里面的代码好像没有被执行。 如何取消这个请求? ***.com/questions/11499281/… RKObjectLoader,通过block传入的参数,是RKRequest的子类。在块内,只需将加载程序存储到位于块范围之外的 ivar。然后你可以在需要的时候调用 [loader cancel] 来取消它。以上是关于Restkit,使用 loadObjectsAtResourcePath 发送帖子数据的主要内容,如果未能解决你的问题,请参考以下文章