Сервер интеграции WebMethods pub.client.soapclient изменяет имена элементов запроса

У меня проблема со встроенной (недоступной) службой soapClient Сервера интеграции webMethods. Каким-то образом он изменяет запрос, который должен отправить при его обработке, переименовывая параметр items в item.

что отправляется методу:

<request>
  <t1>1</t1>
  <operation>op</operation>
  <service>1</service>
  <params>
    <count>1</count>
    <items>
      <key>12</key>
      <value>12</value>
    </items>
  </params>
</request>

какой запрос отправляет веб-метод:

<request>
  <t1>1</t1>
  <operation>op</operation>
  <service>1</service>
  <params>
    <count>1</count>
    <item>
      <key>12</key>
      <value>12</value>
    </item>
  </params>
</request>

Буду благодарен за любой обходной путь / идею решения.


person SSV    schedule 19.06.2017    source источник
comment
Класс работает нормально (вы не должны декомпилировать и публиковать код поставщика !! Это незаконно! Удалите ссылку как можно скорее!). Скорее всего, ваша потоковая служба, в которой вы генерируете данные, не использует / создает список документов для элементов, а просто документ с именем item. Пожалуйста, проверьте это.   -  person Henning Waack    schedule 20.06.2017
comment
Вот как я его отлаживаю: i.imgur.com/csC40Hs.png Он все еще меняет xml в ‹item› в обоих случаях.   -  person SSV    schedule 20.06.2017
comment
Не могли бы вы выложить пример / скриншот, как именно вы передаете этот документ в мыльный сервис? как вы создаете запрос на мыло? Можете ли вы экспортировать свой пакет и разместить его здесь?   -  person Henning Waack    schedule 21.06.2017
comment
@HenningWaack Из-за того, что он уверен, я не могу поделиться всем пакетом, но я воспроизвел идею создания запроса в тестовом пакете (обратите внимание, что заголовки и другие вещи не передаются) ufile.io/1e9jz отправка такого запроса изменит элементы 'items' на элемент 'item'.   -  person SSV    schedule 03.07.2017


Ответы (1)


В вашем примере кода я вижу, что вы сначала создаете документ с именем «items», а затем сопоставляете этот документ со списком документов с именем «items». Это неверно. Обратите внимание, что конвейер в IntegrationServer - это не что иное, как карта "ключ-значение", и ключи должны быть уникальными. По этой причине у вас все еще есть один документ с именем «items» вместо списка документов. Переименуйте свой документ во что-то вроде «item», а затем используйте appendToDocumentList, чтобы добавить его в список документов «items».

Неправильное сопоставление

person Henning Waack    schedule 04.07.2017
comment
Я хотел создать быстрый поток описания проблемы и допустил ошибку, создание документа по-своему ничего не меняет. Взгляните на этот пакет: (добавьте элементы во ввод при отладке). Проблема не должна возникать здесь ufile.io/cwg74 - person SSV; 12.07.2017
comment
Извините, этот пакет слишком уменьшен, чтобы воспроизвести что-либо! Пожалуйста, предоставьте рабочий образец, в котором воспроизводится эта проблема, иначе помочь трудно / невозможно. - person Henning Waack; 14.07.2017
comment
просто попробуйте отправить сформированный таким образом запрос с помощью webMethods soapClient. Похоже, это ошибка в реализации со стороны Software AG, я просто напишу Java-реализацию SOAP-коммуникации и буду использовать ее в своем потоке. - person SSV; 14.07.2017