SoapObject is used when we need to get the Response for a Class type, like Customer, Product, etc. (From the SoapObject you need to iterate over the values inside the SoapResponse.)
SoapPrimitive is used for Primitive datatypes like Integer, Boolean.
For example, in the following code I am expecting a Boolean value from SoapResponse:
SoapPrimitive response = (SoapPrimitive) envelope.getResponse();
Boolean status = Boolean.valueOf(response.toString());
And in the following code, I need to get the Response as an Object:
SoapObject response = (SoapObject) envelope.getResponse();
Log.d("Response", response.toString());
int count = response.getPropertyCount();
for (int i = 0; i < count; i++) {
userObj = new User(response.getProperty(1).toString(),
Double.parseDouble(response.getProperty(2).toString()));
}