0

このフレームワークにカスタム値オブジェクトがある場合、どうすればよいですか? 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");

ログは「引数タイプの不一致」
であり、その結果、Web サーバーはリモート LoginRequest オブジェクトを見つけることができません。何か案は?どうもありがとう

4

1 に答える 1

0

返事が遅れて申し訳ありません。

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

解決策は、翻訳を次のように追加することです。

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

デフォルトのパッケージ/プレフィックスを両端で定義できる v2.0 で、これに対するより良いサポートを追加しました。たとえばcom.mycompany.、Java やMCObj-C などです。残念ながら、v2.0 ブランチは本番環境で使用できるほど安定していません。

于 2011-01-02T19:33:19.873 に答える