我是目标和休息套件的新手。我的代码运行没有错误,但服务器没有显示任何发布请求。网址和方法名称是正确的,还有其他我错过了吗?
下面是我正在使用的代码
-(void)construct
{
RKLogConfigureByName("RestKit/Network", RKLogLevelTrace);
URL = @"http://xx.xx.xx.xx:80/CW_war/getMyOffersCount";
}
- (void)run{
//mapping request object
RKObjectMapping* mapping = [RKObjectMapping mappingForClass:[CountResultVO class]];
[mapping mapKeyPath:@"offercount" toAttribute:@"offercount"];
[mapping mapKeyPath:@"insertCount" toAttribute:@"insertCount"];
[mapping mapKeyPath:@"favouriteOfferCount" toAttribute:@"favouriteOfferCount"];
[mapping mapKeyPath:@"favouriteInsertCount" toAttribute:@"favouriteInsertCount"];
//set mapping
[[RKObjectManager sharedManager].mappingProvider addObjectMapping:mapping];forKeyPath:@"articles"];
//serializing post object
RKObjectMapping* outSerializationMapping = [RKObjectMapping mappingForClass:[NSMutableDictionary class]];
[outSerializationMapping mapAttributes:@"userId", @"userId", @"mode", @"mode", nil];
[[RKObjectManager sharedManager].mappingProvider setSerializationMapping:outSerializationMapping forClass:[BasicUserArgVo class]];
//setting post params
RKObjectManager* manager = [RKObjectManager objectManagerWithBaseURL:URL];
manager.acceptMIMEType = RKMIMETypeJSON;
manager.serializationMIMEType = RKMIMETypeJSON;
//setting post object router
[manager.router routeClass:[BasicUserArgVo class]
toResourcePath:@"/getMyOffersCount"
forMethod:RKRequestMethodPOST];
//init post object
BasicUserArgVo *bvo = [[BasicUserArgVo alloc]initWithUserId:5 andMode:nil];
//post object BasicUserArgVo and map to CountResultVO
[manager postObject:bvo mapResponseWith:mapping delegate:self];
}
- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObject:(NSArray*)objects {
NSLog(@"hello");
CountResultVO* countResultVO = [objects objectAtIndex:0];
NSLog(@"RESULT : %ld %ld",[countResultVO offercount],[countResultVO insertCount]);
}
- (void)objectLoader:(RKObjectLoader *)objectLoader didFailWithError:(NSError *)error {
NSLog([NSString stringWithFormat:@"Error: %@", [error localizedDescription]]);
}
=============================================== =================
编辑:
对象 -
@interface CountResultVO : NSObject
{
long offercount;
long insertCount;
long favouriteOfferCount;
long favouriteInsertCount;
}
@property(nonatomic,readwrite) long offercount;
@property(nonatomic,readwrite) long insertCount;
@property(nonatomic,readwrite) long favouriteOfferCount;
@property(nonatomic,readwrite) long favouriteInsertCount;
@end
和
@interface BasicUserArgVo : NSObject
{
long userId;
NSString *mode;
}
@property(nonatomic,readwrite) long userId;
@property(nonatomic,retain) NSString * mode;
-(id)initWithUserId:(long)uid andMode:(NSString *)m;
-(id)initWithUserId:(long)uid;
@end
我正在我的应用程序viewDidLoad
中调用(void)run方法- (void)viewDidLoad
{
RestKitUtil *restKitUtil = [[RestKitUtil alloc]init];
[restKitUtil run];
[super viewDidLoad];
}
答案 0 :(得分:1)
您好我改变了一些元素,但如果这个没有解决您的问题,我需要更多的代码和跟踪。可以看到您的VO代码吗?
您是否真的在BasicUserArgVo对象中拥有“userId”和“mode”属性?如果不是这可能是你的问题。
-(void)construct
{
RKLogConfigureByName("RestKit/Network", RKLogLevelTrace);
URL = @"http://xx.xx.xx.xx:80/CW_war/getMyOffersCount";
//setting post params
RKObjectManager* manager = [RKObjectManager objectManagerWithBaseURL:URL];
[RKObjectManager sharedManager].acceptMIMEType = RKMIMETypeJSON;
[RKObjectManager sharedManager].serializationMIMEType = RKMIMETypeJSON;
//mapping request object
RKObjectMapping* mapping = [RKObjectMapping mappingForClass:[CountResultVO class]];
[mapping mapKeyPath:@"offercount" toAttribute:@"offercount"];
[mapping mapKeyPath:@"insertCount" toAttribute:@"insertCount"];
[mapping mapKeyPath:@"favouriteOfferCount" toAttribute:@"favouriteOfferCount"];
[mapping mapKeyPath:@"favouriteInsertCount" toAttribute:@"favouriteInsertCount"];
//set mapping [I change called method, there seems to be a misuse at this level]
[[RKObjectManager sharedManager].mappingProvider setMapping:mapping forKeyPath:@"articles"];
//serializing post object
RKObjectMapping* outSerializationMapping = [RKObjectMapping mappingForClass: [NSMutableDictionary class] ];
// [If class attributes names are same as JSON's, don't repeat]
[outSerializationMapping mapAttributes:@"userId", @"mode", nil];
[[RKObjectManager sharedManager].mappingProvider setSerializationMapping:authSerializationMapping forClass:[BasicUserArgVo class] ];
//setting post object router
[[RKObjectManager sharedManager].router routeClass:[BasicUserArgVo class]
toResourcePath:@"/getMyOffersCount"
forMethod:RKRequestMethodPOST];
}
- (void)run{
//init post object
BasicUserArgVo *bvo = [[BasicUserArgVo alloc]initWithUserId:5 andMode:nil];
//post object BasicUserArgVo and map to CountResultVO
RKObjectMapping* myMapping = [[RKObjectManager sharedManager].mappingProvider objectMappingForClass:[CountResultVO class] ];
[[RKObjectManager sharedManager] postObject:bvo mapResponseWith:myMapping delegate:self];
}
- (void)objectLoader:(RKObjectLoader*)objectLoader didLoadObject:(NSArray*)objects {
NSLog(@"hello");
CountResultVO* countResultVO = [objects objectAtIndex:0];
NSLog(@"RESULT : %ld %ld",[countResultVO offercount],[countResultVO insertCount]);
}
- (void)objectLoader:(RKObjectLoader *)objectLoader didFailWithError:(NSError *)error {
NSLog([NSString stringWithFormat:@"Error: %@", [error localizedDescription]]);
}