我正在尝试迁移到RestKit 0.20-pre2。
目前我设法迁移我的映射(至少编译器不再抱怨),但是我在创建请求时遇到了问题(之前我使用过不再存在的RKObjectLoader。
我之前的代码如下:
- (RKObjectLoader*)objectLoaderWithResourcePath: (NSString*)resourcePath
method: (RKRequestMethod)httpMethod
parameters: (NSDictionary*)parameters
mappableClass: (Class)objectClass
{
RKObjectMapping *mapping = [self.objectManager.mappingProvider objectMappingForClass:objectClass];
NSString *path = resourcePath;
if (httpMethod == RKRequestMethodGET) {
path = [resourcePath stringByAppendingQueryParameters:parameters];
}
RKObjectLoader *request = [self.objectManager loaderWithResourcePath:path];
request.method = httpMethod;
request.delegate = self;
request.objectMapping = mapping;
if (httpMethod != RKRequestMethodGET) {
request.params = parameters;
}
return request;
}
我使用上面的方法创建一个通用请求,然后同步或异步发送它。
现在......我看到了新的方法getObjectsAtPath: parameters: success: failure:
,但是......我需要同样的POST(我没有任何对象要发布...它只是接受POST请求的服务器登录..)
任何帮助?
谢谢
答案 0 :(得分:2)
我和你有同样的问题,我在这里得到了一个很好的答案:
Trying to make a POST request with RestKit and map the response to Core Data
基本上,
这就是你需要的:
NSDictionary *dictionary = @{ @"firstParam": @(12345), @"secondParam": @"whatever"};
NSMutableURLRequest *request = [objectManager requestWithObject:nil method:RKRequestMethodPOST path:@"/whatever" parameters:parameters];
RKObjectRequestOperation *operation = [objectManager objectRequestOperationWithRequest:request ^(RKObjectRequestOperation *operation, RKMappingResult *result) {
NSLog(@"Loading mapping result: %@", result);
} failure:nil];
README部分的托管对象请求中有一个示例可以帮助您:
答案 1 :(得分:1)
您可以直接使用AFNetworking使用RK HTTPClient子类,如下所示:
[[RKObjectManager sharedManager].HTTPClient postPath:@"/auth" parameters:params success:^(AFHTTPRequestOperation *operation, id JSON)
{
// Success
} failure:^(AFHTTPRequestOperation *operation, NSError *error)
{
// Error
}];
自RestKit v0.20.x以来,RK现在使用AFNetworking代替RKClient,因此您可以直接参考AFNetworking文档:
修改强>
在我的项目中,对于auth,我只是创建了一个名为User的NSObject,带有一个单例,并自己管理映射。我(个人)不需要在我的核心数据堆栈中拥有我的auth用户。如果需要使用RK Core数据映射功能,请使用postObject:path:parameters:success:failure:方法查看RKObjectManager。