Моя служба обычно возвращает что-то вроде:
anyType{Acc1=96628; Code=E; OnArr=false; CanArr=true; Username=ANDERSON;}
который я затем подталкиваю к своему объекту с помощью
details.Username = response.getProperty("Username").toString();
и это работает именно так, как мне нужно, пока я не получу ответ, который не имеет значения для имени пользователя, который возвращается следующим образом:
anyType{Acc1=96628; Code=E; OnArr=false; CanArr=true; Username=anyType{};}
Когда я позже вызываю details.Username, он возвращает «anyType {}» (в виде строки), а не возвращает пустую строку.
Можете ли вы сказать мне, что мне не хватает?
Для ясности, как я попал в response...
SoapObject request = new SoapObject(NAMESPACE, methodName);
PropertyInfo propertyInfo = new PropertyInfo();
propertyInfo.setName("Details");
propertyInfo.setValue(details);
propertyInfo.setType(details.getClass());
request.addProperty(propertyInfo);
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
envelope.implicitTypes = true;
envelope.setOutputSoapObject(request);
envelope.addMapping(NAMESPACE, "Details", Details.class);
HttpTransportSE httpTransportSE = new HttpTransportSE(URL);
httpTransportSE.call(NAMESPACE + methodName, envelope);
SoapObject response = (SoapObject) envelope.getResponse();
[РЕДАКТИРОВАТЬ]
Следующее, кажется, сделало свое дело; хотя я не совсем уверен, почему и правильный ли это подход.
details.Username = response.getPrimitivePropertyAsString("Username");
Да, даже когда я изменил службу, чтобы она возвращала пустую строку (а не NULL), она все равно возвращается.
Можете ли вы указать, что такое тип класса response
ответ - это SoapObject (расширил OP, чтобы включить дополнительные сведения о том, как я получаю ответ
@isaace - response.getPrimitivePropertyAsString("Username"), кажется, исправил это
That's great!



Кажется, это решается с помощью
details.Username = response.getPrimitivePropertyAsString("Username");
Поковырявшись в SoapObject.java, я тоже вижу в этом смысл
/**
* Get the toString value of a property without chance of throwing an
* exception. An object can be provided to this method; if the property is
* not found, this object's string representation will be returned.
*
* @param defaultThing
* toString of the object to return if the property is not found
* @return the property toString if it exists; defaultThing toString if the
* property does not exist, if the defaultThing is null #EMPTY_STRING
* is returned
*/
public String getPropertySafelyAsString(final String namespace,final String name,
final Object defaultThing) {
Integer i = propertyIndex(namespace,name);
if (i != null) {
Object property = getProperty(i.intValue());
if (property != null) {
return property.toString();
} else {
return EMPTY_STRING;
}
} else {
if (defaultThing != null) {
return defaultThing.toString();
} else {
return EMPTY_STRING;
}
}
}
всегда ли говорится
anyType{}, когда нет реальной ценности?