Note that there are some explanatory texts on larger screens.

plurals
  1. POkSoap2 Android -- Cast Class Exception (SoapObject)
    primarykey
    data
    text
    <p>I'm currently trying to retrieve an array from my webservice by using regular Ksoap implementation. However, when trying to access this array I am getting the following logcat error:</p> <pre><code> 04-27 00:27:01.772: ERROR/AndroidRuntime(530): Caused by: java.lang.RuntimeException: Unable to start activity ComponentInfo{android.waiter/android.waiter.TablesActivity}: java.lang.ClassCastException: org.ksoap2.serialization.SoapPrimitive </code></pre> <p>It appears that for some reason Soap is not getting along with the way I am casting my property values. Attached is the problem code (and related methods)</p> <pre><code>public static TableDTO[] RetrieveFromSoap(SoapObject soap) { TableDTO[] tables = new TableDTO[soap.getPropertyCount()]; for (int i = 0; i &lt; tables.length-1; i++) { SoapObject pii = (SoapObject) soap.getProperty(i); TableDTO table = new TableDTO(); table.setTableID(Integer.parseInt(pii.getProperty(0).toString())); table.setCapacity(Integer.parseInt(pii.getProperty(1).toString())); table.setStatusFlag(pii.getProperty(2).toString()); table.setCurrentWaiter(pii.getProperty(3).toString()); tables[i] = table; } return tables; } </code></pre> <p>TableDTO Information:</p> <pre><code> @Override public Object getProperty(int arg0) { switch(arg0) { case 0: return TableID; case 1: return Capacity; case 2: return StatusFlag; case 3: return currentWaiter; } return null; } @Override public int getPropertyCount() { // TODO Auto-generated method stub return 3; } @Override public void getPropertyInfo(int arg0, Hashtable arg1, PropertyInfo info) { switch(arg0){ case 0: info.type = PropertyInfo.INTEGER_CLASS; info.name = "TableID"; break; case 1: info.type = PropertyInfo.INTEGER_CLASS; info.name = "Capacity"; break; case 2: info.type = PropertyInfo.STRING_CLASS; info.name = "StatusFlag"; break; case 3: info.type = PropertyInfo.INTEGER_CLASS; info.name = "currentWaiter"; break; default:break; } } @Override public void setProperty(int arg0, Object value) { switch(arg0) { case 0: TableID = Integer.parseInt(value.toString()); break; case 1: Capacity = Integer.parseInt(value.toString()); break; case 2: StatusFlag = value.toString(); break; case 3: currentWaiter = value.toString(); break; default : break; } } </code></pre> <p>The problem is with the line</p> <pre><code> SoapObject pii = (SoapObject) soap.getProperty(i); </code></pre> <p>It does not like the casting there. I'm at a loss on how to fix this.</p> <p>Thanks for your time and help!</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload