0

您好正在尝试从 android 应用程序调用 web 服务。

我将一个可序列化的对象Person从我的 android 应用程序传递给调用 web 服务。并且在服务器端正在使用这个可序列化的对象并在那里进行一些修改。

但问题是在执行我的 android 应用程序时,它显示如下异常: java.lang.RuntimeException: Cannot serialize: com.test.android.Person@43950fe0

我对解决这个问题没有任何想法。双方都在使用可序列化的对象来设置和获取参数。

以下是正在使用的人员类

public class Person implements Serializable{

private String firstName;
private String lastame;

public String getFirstName() {
    return firstName;
}
public void setFirstName(String firstName) {
    this.firstName = firstName;
}
public String getLastame() {
    return lastame;
}
public void setLastame(String lastame) {
    this.lastame = lastame;
}

}

我在android端的webservice imlpementation类:

    SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);        
    request.addProperty("person", person);

    SoapSerializationEnvelope envelope = 
        new SoapSerializationEnvelope(SoapEnvelope.VER11); 

    envelope.setOutputSoapObject(request);
    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

    androidHttpTransport.call(SOAP_ACTION, envelope);

    SoapObject resultsRequestSOAP = (SoapObject) envelope.bodyIn;

如果将可序列化对象作为参数传递,则在这一行中出现错误androidHttpTransport.call(SOAP_ACTION, envelope);,但如果参数是普通对象,如 String、int 等,则不会遇到任何问题。

谁能给我一个关于如何解决这个问题的想法。?

4

3 回答 3

1

即使它什么都不做,你也必须添加一个默认构造函数。否则它不会被认为是可序列化的

代码:

public class Person implements Serializable{

    private String firstName;
    private String lastame;

    private Person() {}

    public String getFirstName() {
        return firstName;
    }
    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }
    public String getLastame() {
        return lastame;
    }
    public void setLastame(String lastame) {
        this.lastame = lastame;
    }
}
于 2012-01-13T14:02:49.743 回答
0

如果您想有效地使用可序列化接口,遵循好的方法非常重要,这里展示了一个很好的例子:http: //www.jondev.net/articles/Android_Serialization_Example_(Java)

实施时严格要求非常重要。

祝你好运!如果您想要更好的响应,则需要显示更多代码。在这里,您的课程很适合序列化,但这取决于您的制作方式!

编辑:确实阿德尔,好点!

编辑2:这似乎与这里的问题相同:

HttpTransportSE requestDump 给出 NullPointerException

于 2012-01-13T13:56:42.543 回答
0

尝试在这里实现 KvmSerializable 接口,这里有 2 个非常明确的教程,希望它们会有所帮助:)

于 2012-07-17T10:06:57.950 回答