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