1

クラスオブジェクトを入力パラメーターとして期待する関数を呼び出すことにより、Android アプリを介して Web サービスを使用しようとしています。しかし、呼び出し中にエラー java.lang.RuntimeException: Cannot serialize: MyClass が発生します

次の解決策を試しましたが、役に立ちませんでした: KSOAP2 java.lang.RuntimeException: Cannot serialize

https://code.google.com/p/ksoap2-android/issues/detail?id=141

コード: SoapObject request = helperLogin();

        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
                SoapEnvelope.VER10);

        envelope.dotNet = false;

        envelope.setOutputSoapObject(request);

        envelope.addMapping(NAMESPACE, "L1UserProfileRowDTO", L1UserProfileRowDTO.class);
        envelope.addMapping(NAMESPACE, "L1UserRowDTO", L1UserRowDTO.class);

        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

        androidHttpTransport.debug = true;
        TextView ACTV = (TextView) findViewById(R.id.textView1);

        androidHttpTransport.call(SOAP_ACTION, envelope);

最後の行は例外をスローします。

私のクラスはシリアライズ可能なインターフェースを実装し、デフォルトのコンストラクターも持っています。助けてください。

4

2 に答える 2

4

問題を解決できました:

public class L1UserProfileRowDTO extends Vector<String> implements KvmSerializable

また、次の関数をオーバーライドします。

@Override
public Object getProperty(int arg0) {
    // TODO Auto-generated method stub
    return this.get(arg0);
}

@Override
public int getPropertyCount() {
    // TODO Auto-generated method stub
    return this.size();
}

@Override
public void getPropertyInfo(int arg0, Hashtable arg1, PropertyInfo arg2) {
    // TODO Auto-generated method stub
    arg2.name = "string";
    arg2.type = PropertyInfo.STRING_CLASS;
}

@Override
public void setProperty(int arg0, Object arg1) {
    // TODO Auto-generated method stub
    this.add(arg1.toString());
}
于 2013-06-20T09:46:28.260 に答える
0

You can try implementing Serializable in MyClass. It goes like this -

class MyClass implements Serializable {
   // Constructor

   // Properties

   // Methods
}
于 2013-06-17T13:31:32.613 に答える