我在android中使用ksoap2
将数字列表作为字符串发送
但它有错误:
java.lang.runtimeexception无法序列化
我搜索此错误的解决方案但结果没有改变
可以帮帮我
public String Send(ArrayList<String> contactList){ try{SoapObject request = new SoapObject(WSDL_TARGET_nameSPACE,OPERATION_name);PropertyInfo pi=new PropertyInfo(); pi.setType(String.class); pi.setname("contactList"); pi.setValue(contactList); request.addProperty("contactList", pi);StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); // Creating SOAP envelope SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); new MarshalBase64().register(envelope); // this line is for serialization //You can comment that line if your web service is not .NET one. envelope.dotNet = true; envelope.setoutputSoapObject(request); AndroIDhttpTransport androIDhttpTransport = new AndroIDhttpTransport("http://10.0.2.2:54869/Service1.asmx"); androIDhttpTransport.deBUG = true;} catch (Exception exception) { return exception.toString(); } try { androIDhttpTransport.call(SOAP_ACTION, envelope); //String result = envelope.getResponse().toString(); return "";//result; } catch (Exception exception) { return exception.toString(); }
解决方法:
使用此类进行序列化
public class MarshalDouble implements Marshal { public Object readInstance(XmlPullParser parser, String namespace, String name, PropertyInfo expected) throws IOException, XmlPullParserException { return Double.parseDouble(parser.nextText()); } public voID register(SoapSerializationEnvelope cm) { cm.addMapPing(cm.xsd, "double", Double.class, this); } public voID writeInstance(XmlSerializer writer, Object obj) throws IOException { writer.text(obj.toString()); } }
添加此行以包围
envelope.dotNet = true; envelope.implicitTypes = true; envelope.enCodingStyle = SoapSerializationEnvelope.XSD; MarshalDouble md = new MarshalDouble(); md.register(envelope);
总结 以上是内存溢出为你收集整理的java – 在android中的Ksoap2无法序列化全部内容,希望文章能够帮你解决java – 在android中的Ksoap2无法序列化所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)