RestKit не публикуется на сервере - PullRequest
0 голосов
/ 23 февраля 2012

Я новичок в цели и в остальном. Мой код работает без ошибок, но сервер не показывает ни одного сделанного почтового запроса. URL и имена методов верны, есть что-то еще, что я пропускаю?

ниже приведен код, который я использую

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

=============================================================== *===== *

изменить:

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

и

@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

, и я вызываю (void) метод run в моих приложениях viewDidLoad

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

    [super viewDidLoad];
}

1 Ответ

1 голос
/ 24 февраля 2012

Здравствуйте, я изменил несколько элементов, но если этот не решит вашу проблему, мне нужно больше кода и трассировки. Можно увидеть ваш VO код?

Есть ли у вас атрибуты "userId" и "mode" в объекте BasicUserArgVo? Если нет, то это может быть вашей проблемой.

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