Помогите преобразовать этот запрос SOAP в запрос построителя отчетов 2.0 для источника данных XML

У меня есть сложный параметр для веб-метода в моем веб-сервисе.NET, и я хочу запросить этот веб-метод с помощью Report Builder 2.0 с использованием SOAP. С soapUI я получаю следующий SOAP-запрос для этого веб-метода:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:qcr="MyNamespace">
   <soapenv:Header/>
   <soapenv:Body>
      <qcr:MyWebMethod>
         <qcr:MyComplexParameter><!--Represents a serializable class-->
            <qcr:Action>?</qcr:Action><!--string-->
            <qcr:ActionSortAscending>?</qcr:ActionSortAscending><!--Boolean-->
            <qcr:ActionSortOrder>?</qcr:ActionSortOrder><!--int-->
         </qcr:MyComplexParameter>
      </qcr:MyWebMethod>
   </soapenv:Body>
</soapenv:Envelope>

Единственный вид запросов Report Builder 2, с которыми я работал ранее, был для веб-методов, которые принимали в качестве параметров строки, целые числа или другие простые типы. Как мне написать запрос Report Builder 2 для этого запроса SOAP?

Пример запроса построителя отчетов 2 для веб-метода с простыми параметрами:

<Query>
   <Method Name="MyWebMethod" Namespace="MyNamespace">
   <Parameters>
       <Parameter Name="MyStringParameter"><DefaultValue>foo</DefaultValue></Parameter>
       <Parameter Name="MyNumericParameter"><DefaultValue>3</DefaultValue></Parameter>
   </Parameters>
   </Method>
   <ElementPath IgnoreNamespaces="true">MyWebMethodResponse {}/MyWebMethodResult {}/Result</ElementPath>
</Query>

1 ответ

Решение

Лучшее, что я придумал, - это изменить веб-метод веб-службы, чтобы он принимал только простые параметры, а затем нашел способ представить сложный объект в строке и проанализировать его в веб-методе. Пары ключ-значение и регулярное выражение, строки JSON и т. Д. Это не сработало бы, если бы у меня не было контроля над кодом веб-службы, и действительно кажется, что должен быть способ передачи любого сериализуемого параметра из отчета. Builder для веб-службы XML. Если я могу передать параметр в обычном запросе SOAP, я смогу передать параметр через глупого построителя отчетов Query синтаксис.

Если это поможет кому-то еще, для анализа разделенных запятыми пар ключ-значение формата key1=value1,key2=value2, Я использовал new Regex(@"([^=,]*)=(""[^""]*""|[^,""]*)") а также paramStr.Split(',').Select(pair => pair.Split('=')).ToDictionary(pair => pair[0], pair => pair[1]) чтобы получить IDictionary<string, string> параметров в моем C# веб-сервисе.

Другие вопросы по тегам