2010-12-14 7 views
0

このフレームワークにカスタム値オブジェクトがある場合、どうすればよいですか?私は、LoginRequestとLoginResponseのインタフェースと実装を宣言して定義しており、LoginRequestとLoginResponseのプロトコルも宣言されています。 私のコードで間違いを見つけることができません。コードは以下の通りです:iPhone SDKのhessianKit

//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"); 

ログは
結果は、WebサーバーがリモートLoginRequestオブジェクトを見つけることができないということです「引数の型の不一致」です。 アイデア ありがとうございました

答えて

0

ご返信ありがとうございます。

問題は、ルートプロキシオブジェクトだけが完全なパッケージを無視することです。他のすべてのクラスとインタフェースは、フルネームで検索されます。つまり、Objective-Cの世界のクラスLoginRequestは、Java世界のデフォルトパッケージに存在することが期待されます。おそらくそうではありません。

ソリューションは、次のような翻訳を追加することです:

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

私はデフォルトのパッケージ/プレフィックスは、両端を定義することができv2.0の、のために、このためのより良いサポートが追加されました。たとえば、Javaではcom.mycompany.、Obj-CではMCです。 v2.0ブランチはまだ不幸にも生産には十分安定していません。