帮助将此SOAP请求转换为XML数据源的报表生成器2.0查询
我在.NETWeb服务中有一个复杂的web方法参数,我想用它来查询该web方法。使用,我得到该web方法的以下SOAP请求:帮助将此SOAP请求转换为XML数据源的报表生成器2.0查询,xml,soap,reporting-services,ssrs-2008,reportbuilder,Xml,Soap,Reporting Services,Ssrs 2008,Reportbuilder,我在.NETWeb服务中有一个复杂的web方法参数,我想用它来查询该web方法。使用,我得到该web方法的以下SOAP请求: <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:qcr="MyNamespace"> <soapenv:Header/> <soapenv:Body> <qcr:MyWebMethod>
<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>
我以前使用过的唯一一种ReportBuilder2查询是针对以字符串、整数或其他简单类型为参数的web方法。我将如何为这个SOAP请求编写一个脚本
具有简单参数的web方法的报表生成器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>
我想到的最好办法是更改web服务的web方法,使其只需要简单的参数,然后找到某种方法用字符串表示复杂对象,并在web方法中对其进行解析。键-值对、正则表达式、JSON字符串等。如果我不能控制web服务的代码,这将不起作用,而且似乎应该有一种方法将任何类型的可序列化参数从报表生成器传递到XML web服务。如果我可以在一个普通的SOAP请求中传递一个参数,那么我应该能够通过报表生成器愚蠢的查询语法传递该参数
如果对其他人有帮助的话,为了解析格式为key1=value1,key2=value2的逗号分隔键值对,我使用了新的正则表达式@[^=,]*[^]*.[^,]*和paramStr.Split','.Selectpair=>pair.Split'='。ToDictionarypair=>pair[0],pair=>pair[1]在我的C web服务中获取参数的IDictionary。我想到的最好办法是更改web服务的web方法,使其只需要简单的参数,然后找到某种方法,用字符串表示复杂对象并在web方法中解析它。键-值对、正则表达式、JSON字符串等。如果我不能控制web服务的代码,这将不起作用,而且似乎应该有一种方法将任何类型的可序列化参数从报表生成器传递到XML web服务。如果我可以在一个普通的SOAP请求中传递一个参数,那么我应该能够通过报表生成器愚蠢的查询语法传递该参数
如果对其他人有帮助的话,为了解析格式为key1=value1,key2=value2的逗号分隔键值对,我使用了新的正则表达式@[^=,]*[^]*.[^,]*和paramStr.Split','.Selectpair=>pair.Split'='。ToDictionarypair=>pair[0],pair=>pair[1]获取我的C web服务中的参数索引。您找到过更好的解决方案吗?您找到过更好的解决方案吗?