【问题标题】:Get boolean from SoapObject (kSOAP2)从 SoapObject (kSOAP2) 获取布尔值
【发布时间】:2012-05-19 15:07:27
【问题描述】:

我正在尝试从 SoapObject 获取布尔值,我从使用 Android 中的 kSOAP2 的 Web 服务器的响应中得到...

我已将网络调用的响应保存在 SoapObject 中:

SoapObject sResult = (SoapObject)envelope.bodyIn;

我正在遍历响应并获取值

SoapObject soapresults = (SoapObject)sResult.getProperty(0);

for (int i = 0; i < count; i++)
{
    SoapObject mail = (SoapObject)soapresults.getProperty(i);

    /*Getting the values here*/   
}

邮件 SoapObject 将与此类似:

MessageInstance=anyType{AuthorName=Børnehaven; CreatedAtUtc=2012-04-10T18:30:00;编号=631; MessageBody=Husk i morgen; 收件人=anyType{FullName=null; id=2104535421;读=真; ReadAtUtc=2012-04-10T18:30:00; }; };

我无法获取的唯一值是“IsRead”值,我想将其存储为布尔值...

我尝试了一些方法:

(Boolean)mail.getProperty("IsRead");
((Boolean) mail.getProperty("IsRead")).booleanValue();

但我不断得到:

W/System.err(1283):java.lang.RuntimeException:非法属性: 已读

正确的获取方式是什么?

【问题讨论】:

  • 尝试获取属性Recipient,然后再次循环以获取IsRead 属性,就像您为MessageInstance 所做的那样。我想你会很容易得到它。

标签: android boolean ksoap2


【解决方案1】:

试试这个代码 sn-p:

SoapObject soRecipient = (SoapObject) mail.getProperty("Recipient");

boolean isRead = Boolean.parseBoolean(soRecipient.getPropertyAsString("IsRead"));
String fullName = soRecipient.getPropertyAsString("FullName");
String id = soRecipient.getPropertyAsString("Id");
String readAtUtc = soRecipient.getPropertyAsString("ReadAtUtc");

【讨论】:

  • 我仍然遇到同样的错误......这很奇怪,我已经尝试了所有将字符串转换为布尔值的方法,我可以找到......我也试过了先把它变成一个字符串,然后再转换那个字符串,但我仍然得到同样的错误......
  • 首先是:SoapObject soRecipient = (SoapObject) mail.getProperty("Recipient");
  • 在此之后: boolean isRead = Boolean.parseBoolean(soRecipient.getPropertyAsString("IsRead"));
  • 哦,该死的..我是个白痴 :) 我知道这一点,只是忘了它比其他嵌套更深...感谢您纠正我的大脑放屁 :)
  • 大家好,就我而言,我从 Webservice 获得的响应是​​动态的(即),例如,它可能包含某个属性,也可能不包含。在那种情况下,我该如何处理这个非法的属性异常。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-08
  • 2012-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多