помогите преобразовать этот запрос SOAP в запрос построителя отчетов 2.0 для источника данных XML - PullRequest
1 голос
/ 23 июля 2010

У меня есть комплексный параметр для веб-метода в моей веб-службе .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, с которыми я работал ранее, был для веб-методов, которые принимали строки, целые числа или другие простые типы в качестве параметров.Как мне написать запрос построителя отчетов 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 Ответ

0 голосов
/ 13 апреля 2012

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

...