Второй xml не создается

82
03 марта 2021, 23:40

Для общения с серваком, нужно отправлять ему несколько xml - так прописано в документации, и вот тут возникли сложности, так как второй xml не создается.

Пробовал:

  1. Новый экземпляр XmlSerializer и StringWriter с другими именами- создается без ошибок, но всегда пуст, чтобы я туда не записывал.

    При этом Я получаю предупреждение:

    Variable xmlcreate1 initializer Xml.newSerializer() is redundant less...
    Inspection info: This inspection points out the cases where a variable value is never used after its assignment, i.e.:  - the variable never gets read after assignment OR  - the value is always overwritten with another assignment before the next variable read OR  - the variable initializer is redundant (for one of the above two reasons)

  2. Поставить null и выдать новый Xml.newSerializer() старому классу- Получаю тот же эффект что и при первом пункте (пустой xml)

  3. выдать новый Xml.newSerializer() старому классу- Получаю тот же эффект что и при первом пункте (пустой xml)

  4. Просто StartDocument - никакой реакции, просто не перезаписывает старый.

p.s сервер прекрасно реагирует на первый xml и высылает правильный ответ, который мы успешно парсим

Вот что для первого xml:

XmlSerializer xmlcreate = Xml.newSerializer();
StringWriter writer = new StringWriter();
xmlcreate.setOutput(writer);
xmlcreate.startDocument("UTF-8", true);
xmlcreate.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
xmlcreate.startTag("", "Command");
xmlcreate.startTag("","Type");
xmlcreate.text("SERVER_CONNECTION");
xmlcreate.endTag("","Type");
xmlcreate.endTag("", "Command");
xmlcreate.endDocument();
//Отправляем на сервер xml
DataOutputStream serverOutput = new DataOutputStream(s.getOutputStream());
serverOutput.writeUTF(writer.toString());
serverOutput.flush();

Вот что для второго xml:

//xmlcreate=null;
//xmlcreate = Xml.newSerializer();
//writer = new StringWriter();
//xmlcreate.setOutput(writer);
xmlcreate.startDocument("UTF-8", true);
                    xmlcreate.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
//Open Tag <Command>
xmlcreate.startTag("", "Command");
xmlcreate.startTag("","Type");
xmlcreate.text("SERVER_GET_SYSTEMTIME");
xmlcreate.endTag("","Type");
xmlcreate.endTag("", "Command");
serverOutput.writeUTF(writer.toString());
serverOutput.flush();

Ничего особого)

Answer 1

Удачные намеки на код: Вначале должно быть так:

writer = new StringWriter();
xmlcreate.setOutput(writer);

А также пропустил закрытие:

xmlcreate.endDocument();
READ ALSO
Database Change Notification

Database Change Notification

Разбираюсь с механизмом нотификаций в ораклеВозникло два вопроса

116
Почему приведение типов к базовому не заставляет выполнять метод базового типа?

Почему приведение типов к базовому не заставляет выполнять метод базового типа?

Учусь программироватьУ меня есть классы (Базовый и производный)

95
видимость значения при синхронизированном изменении

видимость значения при синхронизированном изменении

Насколько известно, изменив volatile переменную, мы остаёмся уверенны, что остальные потоки, которые будут её читать, получат новое значениеПричина...

101
Почему при записи файла файл пустой?

Почему при записи файла файл пустой?

файл сохраняется но он пустойпри дебаге выяснилось что output пустой

119