2012-01-13 62 views
0

你好,我想从android应用程序调用webservice。android:调用java webservice异常-java.lang.RuntimeException

上午从我的android应用程序传递一个可序列化对象Person到调用Web服务。并在服务器端采取这个可序列化的对象,并在那里做一些修改。

但问题是,而在执行我的Android应用程序的时候它显示像一个例外:java.lang.RuntimeException: Cannot serialize: [email protected]

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

以下是Person类现在用

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系统方面我的web服务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);如果我传递一个序列化对象作为参数,但如果param是一个像String这样的普通对象,那么int等不会遇到任何问题。

任何人都可以请给我一个关于如何解决这个问题的想法。

回答

0

如果你想使用有效Serializable接口,它遵循的好方法是非常重要的,一个很好的例子如下所示: http://www.jondev.net/articles/Android_Serialization_Example_(Java)

当你实现它是很严格的,这一点至关重要。

祝你好运!如果你想要更好的回应,你需要展示更多的代码。在这里你的班级很好被序列化,但这取决于你如何做到这一点!

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

编辑2:这似乎对这里出现同样的问题:

HttpTransportSE requestDump gives NullPointerException

+0

其实我收到这个问题但与GWT – 2012-01-13 14:51:17

+0

@波旁:我试图序列化我的对象所指定的链接,你已经给..但这也不工作..谢谢。 – 2012-01-13 14:58:04

+1

好的...你可以请你发布你的代码实现吗?在这里我们不能帮助你更多,如果我们不能找到什么是错的... – Bourbon 2012-01-13 15:07:35

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; 
    } 
} 
+0

thanx ...但这也是行不通的。即使我添加构造函数得到相同错误..无法序列化:[email protected]。我们正常的序列化与Java的情况下不会在Android的情况下工作..? – 2012-01-13 14:56:16

+0

@TijoKVarghese'实现Serializable'它来自哪个包? – 2012-01-13 15:00:19

+0

java.io.Serializable – 2012-01-13 15:01:49

0

尝试实现KvmSerializable接口herehere是2个真正明确的教程希望他们将帮助:)