2012-02-23 2 views
0

Я новичок в объекте и отдыхе. Мой код работает без ошибок, но на сервере не отображается какой-либо пост-запрос. Названия URL-адресов и методов верны, есть ли что-то еще, m отсутствует?RestKit не публиковать на сервере

ниже код я использую

-(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)viewDidLoad 
{ 
    RestKitUtil *restKitUtil = [[RestKitUtil alloc]init]; 
    [restKitUtil run]; 

    [super viewDidLoad]; 
} 
+0

И вы можете использовать NSString вместо длинного типа ?? Я не знаю, можно ли долго нарисовать карту? И после этого, если вы хотите, чтобы ваше длинное значение со строкой: [countResultVO.offercount longLongValue] для примера. Если он не может обрабатывать длинный тип, он не распознает объект сериализации. Есть ли у вас трассировки/журналы RestKit? Вы уверены, что ваш метод построения называется? – Beber

+0

не так много журналов, только [806: fb03] Я реквизит: RKLog.m: 30 RestKit initialized ... Я вызываю конструкцию, а затем запускаю. – ir2pid

+0

Я вижу, что вы заблокировали свой URL-адрес, это нормально, но вы действительно собираетесь порт 80? Вы имели в виду 8080 вместо этого? –

ответ

1

Здравствуйте меняю несколько элементов, но если один не решить вашу проблему, мне нужно больше кода и следы. Вы можете увидеть свой код 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]]); 
} 
+0

все еще не работает на сервере, есть ли какое-то разрешение, которое мне нужно добавить для совершения сетевых вызовов? – ir2pid

+0

и - (void) objectLoader: (RKObjectLoader *) objectLoader didFailWithError: (NSError *) error; метод называется? – Beber

+0

Неа, вот мой restKitUtil класс 'code' @interface RestKitUtil: NSObject { @public NSString * URL; @public NSString * МЕТОД; } - (void) конструкция; - (void) run; 'code' – ir2pid

Смежные вопросы