1

.NET Web サービスに Web メソッドへの複雑なパラメーターがあり、 SOAP を使用して Report Builder 2.0でその Web メソッドにクエリを実行したいと考えています。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>

以前に使用した Report Builder 2 のクエリは、文字列、整数、またはその他の単純な型をパラメーターとして受け取る Web メソッドのみでした。この SOAP 要求に対してReport Builder 2 クエリを作成するにはどうすればよいですか?

単純なパラメーターを使用した Web メソッドの 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>
4

1 に答える 1

1

私が思いついた最善の方法は、Web サービスの Web メソッドを変更して単純なパラメーターのみを受け取り、複雑なオブジェクトを文字列で表し、それを Web メソッドで解析する方法を見つけることでした。キーと値のペアと正規表現、JSON 文字列など。これは、Web サービスのコードを制御できなければ機能しません。Report から任意の種類のシリアル化可能なパラメーターを渡す方法があるはずです。 XML Web サービスのビルダー。通常の SOAP リクエストでパラメーターを渡すことができれば、Report Builder の愚かなQuery構文を介してパラメーターを渡すことができるはずです。

フォーマットのカンマ区切りのキーと値のペアを解析するために、他の人に役立つ場合は、 C# Web サービスでパラメーターのを取得するためにとkey1=value1,key2=value2を使用しました。new Regex(@"([^=,]*)=(""[^""]*""|[^,""]*)")paramStr.Split(',').Select(pair => pair.Split('=')).ToDictionary(pair => pair[0], pair => pair[1])IDictionary<string, string>

于 2012-04-13T16:52:47.520 に答える