代码之家  ›  专栏  ›  技术社区  ›  Sarah Vessels

帮助将此SOAP请求转换为Report Builder 2.0查询XML数据源

  •  1
  • Sarah Vessels  · 技术社区  · 14 年前

    我在.NET Web服务中有一个Web方法的复杂参数,我想用 Report Builder 2.0 using SOAP . 用 soapUI ,我得到该Web方法的以下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>
    

    我以前处理过的ReportBuilder2查询的唯一类型是Web方法,它将字符串、整数或其他简单类型作为参数。我该怎么写呢 Report Builder 2 query 对于这个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>
    
    1 回复  |  直到 13 年前
        1
  •  0
  •   Sarah Vessels    13 年前

    我想到的最好方法是更改Web服务的Web方法,使它只使用简单的参数,然后找到用字符串表示复杂对象并在Web方法中解析复杂对象的方法。键值对和regex、json字符串等。如果我没有对Web服务的代码的控制权,这将不起作用,而且似乎真的应该有一种将任何类型的可序列化参数从报表生成器传递到XML Web服务的方法。如果我能在一个普通的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 Web服务中的参数。