Android: невозможно проанализировать нулевые значения из ответа SOAP (kSoap2) - PullRequest
2 голосов
/ 20 апреля 2011

При синтаксическом анализе данных SoapObject в String [] пустые поля в ответе от веб-службы не добавляются к нему, и я не могу определить пустые свойства путем проверки на ноль или "".

Итак, моя проблема в основном: SoapObject содержит правильное количество свойств, но анализируемый результат (String []) не содержит те, которые пусты, и я не могу проверить пустые свойства и добавить "" в строку [].

Это вызывает проблемы при сохранении в БД SQLite, так как каждый, например, «Пользователь» содержит различное количество полей.

public static String[] getStringArrayResponse(SoapObject node, Vector<String> strings) {

    boolean isFirstCall = false;

    if (strings == null) {
        isFirstCall = true;
        strings = new Vector<String>();
    }

    int count = node.getPropertyCount(); 

    for (int i = 0; i < count; i++) {

        Object obj1 = node.getProperty(i);

        if (obj1 instanceof SoapObject) {
            if (((SoapObject)obj1).getPropertyCount() > 0) {
                // Returns the correct amount of properties
                Log.d("PARSER", "propertycount = " +((SoapObject)obj1).getPropertyCount());
                getStringArrayResponse((SoapObject)obj1, strings);
            }
        } else if (obj1 instanceof SoapPrimitive) { 
            strings.add(((SoapPrimitive)obj1).toString());
        } 
    }

    if (isFirstCall) {
        return (String[])strings.toArray(new String[strings.size()]);
    }
    return null;
}

Это действительно вызывает у меня головную боль, и я благодарен за любую помощь, которую я могу получить:)

1 Ответ

2 голосов
/ 04 мая 2011

Мне нужно было проверить «AnyType {}»:)

if (obj1.toString().equals("anyType{}")){
    strings.add("");
}

Только что добавил этот блок кода ниже else, если.

...