hessianKit в iphone SDK

Если у меня есть объект пользовательского значения в этой структуре, как я должен делать? Я объявил и определил интерфейс и реализацию LoginRequest и LoginResponse, а также объявлен протокол LoginRequest и LoginResponse. Я не могу найти ошибку в своем коде. код выглядит следующим образом:

//mycode
    NSURL* url = [NSURL URLWithString:myurl];
    id<BusinessAPI> proxy = (id<BusinessAPI>)[CWHessianConnection rootProxyWithServiceURL:url protocol:@protocol(BusinessAPI)];

    LoginRequest* loginRequest = [[LoginRequest alloc] init];

    loginRequest.mobileNum = @"123456789";//number.text;
    loginRequest.mobileType = @"iphone";
    loginRequest.password = @"123";//password.text;

    LoginResponse *loginResponse = [proxy loginBusiness:loginRequest];
    if (loginResponse.login) NSLog(@"YES");
    else NSLog(@"NO");

журнал "несоответствие типов аргументов"
В результате веб-сервер не может найти удаленный объект LoginRequest. Есть идеи? большое спасибо

1 ответ

Извините за задержку с ответом.

Ваша проблема в том, что только корневой прокси-объект игнорирует полный пакет. Принимая во внимание, что все другие классы и интерфейсы ищутся, используя их полное имя. Это означает, что ваш LoginRequest ожидается, что класс в мире Objective-C будет жить в пакете по умолчанию в мире Java. Скорее всего, нет.

Решение состоит в том, чтобы добавить перевод как таковой:

[CWHessianArchiver setClassName:@"com.mycompany.LoginRequest"
                       forClass:[LoginRequest class]];

Я добавил лучшую поддержку для v2.0, где для обоих концов можно определить пакет / префикс по умолчанию. Например com.mycompany. в Java и и MC в Obj-C. Ветвь v2.0 недостаточно стабильна для производства, к сожалению, пока.

Другие вопросы по тегам