【问题标题】:Android: Construct SoapObject from stringAndroid:从字符串构造 SoapObject
【发布时间】:2016-02-17 04:30:25
【问题描述】:

在我的一个 Android 项目中,我使用 ksoap2 库来使用肥皂网络服务。我需要预加载一些可用于在用户离线时显示的数据。为此,我曾经将来自soap Web 服务的响应作为字符串存储到SQLite 数据库。我需要找到一种方法来从存储在 sqlite 数据库中的字符串中重建 SoapObject(响应对象)。

我通过将先前保存在数据库中的响应字符串传递给方法createSoapObjectFromSoapObjectString(),尝试了下页中提到的批准解决方案。它抛出异常,因为env.getResponse() 为空。

How can I cast a String to a SoapObject in ksoap2?

我也尝试通过调用下面的语句将之前保存在数据库中的响应字符串直接转换为SoapObject,但它也会抛出ClassCastException异常

SoapObject so = (SoapObject) (Object) soapObjectString;

以下是我想从中构造 SoapObject 的示例响应字符串。 ()

anyType{PatientGroupDetailDC=anyType{HasOverDueTask=No; HasUpComingTask=No; PatientReferenceNo=13; PatientName=02dvwZq8cMhx3bCH96iSMA==; NRICNumber=Gk1dfdkzJAvLJifFdBh2XA4aA==;}; PatientGroupDetailDC=anyType{HasOverDueTask=No; HasUpComingTask=No; PatientReferenceNo=TP00212011; PatientName=5OerjU0weryq/rcPR1QkxlEg==; NRICNumber=d3gFkmVkJqbGdMaO6efdVkIcQ==;}; }

【问题讨论】:

  • 你是怎么得到上面这个“SoapObject”的?它看起来像一个调试输出——也许你使用了toString()?您将需要来自服务的 XML 响应。或者,您可以序列化您的对象...
  • 是的,我确实使用toString() 来获得上述回复。
  • 如果我可以从字符串构造 SoapObject。我可以使用现有的代码而无需太多修改。
  • 拦截 xml 响应并改用它。
  • @323go 以 Xml 格式将响应保存到 sqlite 数据库,并能够从该 X​​ml 字符串重建 SoapObject。谢谢

标签: android


【解决方案1】:

试试这个代码,

SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        Object retObj = soapEnvelope.bodyIn; //OR// Object retObj = "your string response from database";
        SoapObject result = (SoapObject) retObj;
        if (result.getPropertyCount() > 0) {
            Object obj = result.getProperty(0);
        }

【讨论】:

  • 我用上面的代码替换了下面的第2行Object retObj = soapObjectString; // string response from database在下面的行中,它抛出了类转换异常(从String到SoapObject)SoapObject result = (SoapObject) retObj;
猜你喜欢
  • 2013-02-04
  • 2019-05-13
  • 1970-01-01
  • 1970-01-01
  • 2014-12-02
  • 1970-01-01
  • 2015-06-28
  • 2020-07-26
  • 2013-05-05
相关资源
最近更新 更多