помогите преобразовать этот запрос 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?

Пример запроса Report Builder 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>

person Sarah Vessels    schedule 23.07.2010    source источник


Ответы (1)


Лучшее, что я придумал, - это изменить веб-метод веб-службы так, чтобы он принимал только простые параметры, а затем найти способ представления сложного объекта в строке и его синтаксического анализа в веб-методе. Пары ключ-значение и регулярное выражение, строки JSON и т. Д. Это не сработало бы, если бы я не контролировал код веб-службы, и действительно кажется, что должен быть способ передачи любого типа сериализуемых параметров из отчета. Построитель веб-службы 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 #.

person Sarah Vessels    schedule 13.04.2012
comment
Вы когда-нибудь находили лучшее решение? - person CooncilWorker; 12.09.2019