java.lang.RuntimeException:无法序列化:MyClass

时间:2013-06-17 13:26:29

标签: android web-services soap android-ksoap2

我试图通过我的Android应用程序通过调用一个函数来使用Web服务,该函数需要一个类对象作为输入参数。但是在进行调用时我得到一个错误java.lang.RuntimeException:无法序列化: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);

最后一行抛出异常。

我的类实现了可序列化的接口,并且还有一个默认的构造函数。 请帮忙。

2 个答案:

答案 0 :(得分: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());
}

答案 1 :(得分:0)

您可以尝试在Serializable中实施MyClass。它是这样的 -

class MyClass implements Serializable {
   // Constructor

   // Properties

   // Methods
}