Передать массив строк, используя kSOAP2 - PullRequest
0 голосов
/ 21 мая 2018

Мне нужно обновить приложение, которое использует kSOAP2 для отправки запросов.Итак, теперь это xml операции:

<bios:login>
  <auth>
    <parameter1>example1</parameter1>
    <parameter2>example2</parameter2>
    <parameter3>example3</parameter3>
  </auth>
</bios:login>

Операция, ранее не имевшая auth, теперь я должен добавить ее.login - это сама операция, а затем параметры.

Я сделал это с помощью пользовательского класса, который реализует KvmSerializable.По сути, он имеет параметры в качестве атрибутов (я не буду передавать код класса, чтобы все было просто).

Затем я передал это в конверт следующим образом:

envelope.setOutputSoapObject(searchRequest);

Как я долженсделать это сейчас, чтобы инкапсулировать параметры внутри «auth»?

1 Ответ

0 голосов
/ 29 января 2019

Если я вас правильно понимаю, у вас есть класс, который будет уменьшаться до

<bios:login>
  <parameter1>example1</parameter1>
  <parameter2>example2</parameter2>
  <parameter3>example3</parameter3>
</bios:login>

, но его необходимо заключить в auth.В этом случае вы можете добавить класс с текущим значением calss в качестве свойства.

Если вам нужен массив (где все имена параметров совпадают), вы можете использовать это PropertyInfo

PropertyInfo elementType = new PropertyInfo();
info.setName("auth");
info.setType(PropertyInfo.VECTOR_CLASS);
elementType.setType(PropertyInfo.STRING_CLASS);
elementType.setName("parameter");
elementType.setNamespace(Constants.NAMESPACE);
info.setElementType(elementType);

Если у вас есть массив с переменным числом параметров, и эти параметры должны иметь разные имена (считая), это не поможет.


Кстати, было бы проще, черезне так коротко, если вы опубликовали свой KvmSerializable и как вы создали searchRequest, включая xml, который будет выводиться в настоящее время.

...