我想使用RestKit发出POST请求,我使用方法postObject使用RKObjectManager。请求的主体是一个整数数组,JSON表示类似于[2348,9864,3645]。我已经为服务响应添加了RKResponseMapping并且工作正常,但是在服务端,数组总是为空。什么是RKRequestMapping然后我必须添加?我错过了什么?
我的代码如下:
- (void) sendPOSTRequest:(NSArray*) postBody{
RKObjectManager *manager = [RKObjectManager managerWithBaseURL:[NSURL URLWithString:baseUrl]];
RKObjectMapping *responseMapping = [RKObjectMapping mappingForClass:[RKJSONArrayResponse class]];
[responseMapping addAttributeMappingsFromDictionary:@{ @"Code" : @"code",
@"Success":@"success",
@"Content":@"content",
@"Error": @"error"}];
RKResponseDescriptor *responseDescriptor = [RKResponseDescriptor responseDescriptorWithMapping:responseMapping
method:RKRequestMethodPOST
pathPattern:@"/api/Requisitions/SendReport"
keyPath:nil
statusCodes:RKStatusCodeIndexSetForClass(RKStatusCodeClassSuccessful)];
RKObjectMapping *requestMapping = [RKObjectMapping mappingForClass:[NSArray class]];
RKRequestDescriptor *requestDescriptor = [RKRequestDescriptor requestDescriptorWithMapping:requestMapping
objectClass:[NSArray class]
rootKeyPath:nil,
method:RKRequestMethodPOST];
[manager addRequestDescriptor:requestDescriptor];
[manager addResponseDescriptor:responseDescriptor];
[self.manager postObject:postBody
path:@"/api/Requisitions/SendReport"
parameters:nil
success:success
failure:failure];
}
服务代码是用C#用Web Api编写的,在这里你总是会收到变量“report”为null。:
public JsonResponse<int[]> SendReport(int[] report){}
答案 0 :(得分:4)
您有两种方法可以解决此问题:
如果你想正确完成它,你需要为整数值数组创建RKObjectMapping
,然后你需要创建将使用你新创建的RKRequestDescriptor
RKObjectMapping
1}}然后您将使用方法RKRequestDescriptor
将此RKObjectManager
添加到– addRequestDescriptor:
。这将使RestKit根据您的postObject
RKObjectMapping
方法的对象转换为JSON
我不推荐这种方式。但是如果你只是想玩一下,看看你能用最少的努力做什么,你应该传递一个整数数组作为parameters
参数,如下所示:
NSArray * body = @ [@ 1234,@ 7475,@ 4432];
[manager postObject:nil path:@“/ send”parameters:body ...]
请注意,参数参数为NSDictionary
,但如果您通过NSArray
,它将起作用,并会触发警告。
再次,花时间熟悉RKRequestDescriptor
和RKObjectMapping
。
如果您想了解有关最佳RestKit设置的更多信息,以及如何使用少量ObjectManagers构建可维护的应用程序。
答案 1 :(得分:1)
你想要的JSON真的太简单了。 RestKit希望最好发送一个包含键和整数数组值的字典。在您的情况下最简单的方法是直接使用NSJSONSerialization
数组,然后将JSON添加到请求并使用objectRequestOperationWithRequest:success:failure:
并将操作排入队列。