Как передать Custom Arraylist в веб-сервис Soap?
Спасибо за чтение моей проблемы, я пытаюсь передать Custom ArrayList в службу SOAP, которая дает мне не может сериализовать исключение,
вот мой код
// Initialize soap request + add parameters
SoapObject request = new SoapObject(NAMESPACE, METHOD_CALL);
UserInfo userInfo = new UserInfo();
userInfo.name = "xyz";
userInfo.keyName = "name";
userInfoList.add(userInfo);
UserInfo userInfo1 = new UserInfo();
userInfo1.email = "xcv@gmail.com";
userInfo1.keyEmail = "email_id";
userInfoList.add(userInfo1);
UserInfo userInfo2 = new UserInfo();
userInfo2.mobile = "9876543210";
userInfo2.keyMob = "mobileno";
userInfoList.add(userInfo2);
UserInfo userInfo3 = new UserInfo();
userInfo3.regId = "xyz";
userInfo3.keyRegId = "registrationid";
userInfoList.add(userInfo3);
UserInfo userInfo4 = new UserInfo();
userInfo4.appVersion = "1.0";
userInfo4.keyAppVersion = "appversion";
userInfoList.add(userInfo4);
UserInfo userInfo5 = new UserInfo();
userInfo5.xmlString =
"<?xml version=\"1.0\" encoding=\"UTF- 8\"standalone=\"no\"?>"
+ "<a><s><s>"
+ "<d>d</d>"
+ "<f>f</f>"
+ "</a>"
userInfo5.keyXmlString = "xml_string";
userInfoList.add(userInfo5);
request.addProperty("method", "addDeviceInfo");
request.addProperty("parameter", userInfoList);
Log.e("request", "--->>> " + request);
// Declare the version of the SOAP request
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
SoapEnvelope.VER11);
Log.e("1111", "1111");
envelope.setOutputSoapObject(request);
Log.e("222", "222");
envelope.dotNet = false;
envelope.bodyOut = request;
envelope.encodingStyle = SoapSerializationEnvelope.XSD;
Log.e("333", "3333");
// Needed to make the internet call
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
Log.e("44444", "44444");
androidHttpTransport.debug = true;
try {
Log.e("55555", "55555");
// this is the actual part that will call the webservice
androidHttpTransport.call(MainActivity.SOAP_ACTION, envelope);
Log.e("Request", androidHttpTransport.requestDump);
Log.e("Response", androidHttpTransport.responseDump);
} catch (Exception e) {
e.printStackTrace();
}
try {
SoapObject result = (SoapObject) envelope.bodyIn;
Log.e("result", "--->> " + result);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
проблема в том, что я получаю все правильно, но когда дело доходит до androidHttpTransport.call(MainActivity.SOAP_ACTION, envelope);
Это говорит java.lang.RuntimeException: не может сериализовать: [com.example.soapdemo.UserInfo@40da80a8]
вот мой класс информации о пользователе
package com.example.soapdemo;
import java.io.Serializable;
import java.util.Hashtable;
import org.apache.http.entity.SerializableEntity;
import org.ksoap2.serialization.KvmSerializable;
import org.ksoap2.serialization.PropertyInfo;
public class UserInfo implements Serializable {
public String keyName;// = "name";
public String name;
public String keyEmail;// = "email_id";
public String email;
public String keyMob;// = "mobile_no";
public String mobile;
public String keyRegId;// = "registration_id";
public String regId;
public String appVersion;
public String keyAppVersion;
public String xmlString;
public String keyXmlString;
}
помогите мне решить это, любой ответ очень заметен заранее спасибо
я уже прошел много страниц, но не смог решить эту проблему, я буду очень признателен, если кто-нибудь сможет решить эту проблему и помочь мне
большое спасибо вам