我想使用RestKit发出POST请求,我使用方法postObject使用RKObjectManager。请求的主体是整数数组,JSON表示类似于[2348、9864、3645]。我为服务响应添加了RKResponseMapping并可以正常工作,但是在服务端,数组始终为null。我必须添加什么是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];
}
服务代码是使用Web Api用C#编写的,在这里您将始终将变量“report”接收为null。
public JsonResponse<int[]> SendReport(int[] report){}
最佳答案
您有2种方法可以解决此问题:
RKObjectMapping
,然后创建将使用新创建的RKRequestDescriptor
的RKObjectMapping
,然后使用RKRequestDescriptor
方法将此RKObjectManager
添加到– addRequestDescriptor:
中。这将使RestKit根据您的postObject
RKObjectMapping
方法的对象转换为JSONparameters
参数传递,如下所示:NSArray * body = @ [@ @ 1234,@ 7475,@ 4432];
[manager postObject:nil path:@“/ send”参数:body ...]
当心,该参数参数为
NSDictionary
,但是如果您传递NSArray
,它将起作用并会触发警告。再次,花些时间熟悉
RKRequestDescriptor
和RKObjectMapping
。如果您想了解有关最佳RestKit设置以及如何使用很少的ObjectManagers构建可维护应用程序的更多信息。
关于ios - 使用RestKit发出POST请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20832381/