ir2pid
ir2pid

Reputation: 6126

RestKit not posting to server

I'm new to objective and rest kit.My code runs without errors but the server doesn't show any post request being made.the url and method names are correct, is there something else i'm missing ?

below is the code i'm using

-(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]]);
}

================================================================

edit:

the objects-

@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

and

@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

and i'm calling the (void)run method in my apps viewDidLoad

- (void)viewDidLoad
{
    RestKitUtil *restKitUtil = [[RestKitUtil alloc]init];
    [restKitUtil run];

    [super viewDidLoad];
}

Upvotes: 0

Views: 826

Answers (1)

Beber
Beber

Reputation: 1513

Hello I change few elements, but if this one don't solve your problem i need more code and traces. It is possible to see your VO code ?

Do you realy have "userId" and "mode" attributes in BasicUserArgVo object ? If not this can be your problem.

-(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]]);
}

Upvotes: 1

Related Questions