[英]android : call java webservice exception -java.lang.RuntimeException
您好,我試圖從android應用程序調用網絡服務。
正在將可序列化的對象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植入類:
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等普通對象,則不會遇到任何問題。
誰能給我一個有關如何解決此問題的想法。
即使不執行任何操作,也必須添加默認構造函數。 否則,它將不會被視為可序列化
碼:
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;
}
}
如果您想有效地使用可序列化的接口,那么遵循良好的方法非常重要,此處顯示了一個很好的示例: http : //www.jondev.net/articles/Android_Serialization_Example_(Java)
實施時務必要嚴格。
祝好運! 如果想要更好的響應,則需要顯示更多代碼。 在這里,您的課程很適合序列化,但這取決於您的制作方式!
編輯:的確是阿德爾,很好!
編輯2:似乎是與這里相同的問題:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.