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 发送帖子数据的主要内容,如果未能解决你的问题,请参考以下文章

RestKit 与直接 CoreData

不安地使用 RestKit

使用多个基本 URL 和多个对象管理器 (RestKit)

Restkit 0.20.x cocoapods 安装问题 - 编译但找不到 RestKit 的导入

使用cocoapods的restkit项目集成错误

RestKit:无法使用 coredata 执行映射