在 RestKit for iOS 中进行 postObject 操作时忽略响应。

8
我正在使用RestKit连接我们的WCF数据服务。使用RKObjectManager的postObject函数添加实体时,由于响应映射问题,我遇到了一些问题。当添加实体时,WCF数据服务返回201状态代码和新添加的实体(作为响应)。是否有可能忽略响应只使用返回的状态代码来检查添加是否成功?
3个回答

1
为什么要忽略从服务器返回的新实体?映射该结果对于与服务器保持同步的本地表示非常有用。服务器可能已覆盖您对象的某些字段,如对象ID,您希望对其进行跟踪。
如果您遇到映射错误,那么很可能是因为POST操作的响应返回了与GET不同的对象表示。 你试过使用:
- (RKObjectLoader*)postObject:(id<NSObject>)object mapResponseWith:(RKObjectMapping*)objectMapping delegate:(id<RKObjectLoaderDelegate>)delegate 来指定一个更合适的数据映射吗?

0

这里的问题可能是修改REST服务,因此一个简单的解决方案是在 postObject 调用某个资源路径时忽略 didFailWithError 的回调。

- (void)objectLoader:(RKObjectLoader *)objectLoader didFailWithError:(NSError *)error {
if ([objectLoader wasSentToResourcePath:@"/rest/api/returns/201" method:RKRequestMethodPOST] && [[objectLoader response] statusCode]==201) {
    NSLog(@"Object created");
} else {
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Communication error"
                                                        message:[NSString stringWithFormat:@"Received status code %d: %@",                                                                                               objectLoader.response.statusCode,                                                                                               error.localizedDescription]                                                           delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [alertView show];
}

0
创建一个简单的RKObjectMapping,它不关心响应中的任何参数。
[RKObjectMapping mappingForClass: [NSNull class]];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接