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 недостаточно стабильна для производства, к сожалению, пока.