Reporting Services,如何查询具有复杂类型参数的Web服务作为输入

时间:2012-08-02 18:26:00

标签: web-services reporting-services parameter-passing complextype

我需要查询在Reporting Services中传递复杂参数的Web服务作为输入。 我怎么能这样做?

在Visual Studio的查询设计器中,我正在执行以下查询:

<Query>
<SoapAction>http://mywebservice.com/Customers/GetCustomers</SoapAction>
<Method Name="GetCustomers" Namespace="http://mywebservice.com/Customers/">
<Parameters>
<Parameter Name="myParams" type="xml">
   <DefaultValue>
        <myParams>
           <IdCustomer>0</IdCustomer>
        </myParams>
    </DefaultValue>
</Parameter>
</Parameters>
</Method>
<ElementPath IgnoreNamespaces="true">*</ElementPath>
</Query>

WebService希望它作为参数:

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetCustomer xmlns="http://mywebservice.com/Customers/">
      <myParams>
        <IdCustomer>int</IdCustomer>
        <IdCustomer>int</IdCustomer>
      </myParams>
    </GetCustomer>
  </soap:Body>
</soap:Envelope>

当我在Visual Studio 2008中尝试时,我收到以下错误消息:

  

无法执行指定网址的网络请求。肥皂故障:   System.Web.Services.Protocols.SoapException:服务器无法处理请求。 ---&GT; System.NullReferenceException:未将对象引用设置为对象的实例。

1 个答案:

答案 0 :(得分:0)

您应该查看在测试客户端中发送的xml,以获取查询所需语法的示例。我建议使用Visual Studio附带的wcftestclient。运行测试后,您可以在XML选项卡上查看xml(在wcftestclient的屏幕底部),并替换&lt; DefaultValue&gt;中的内容。查询中带有相应参数值的部分。

该Web服务的查询应如下所示。请注意 a 命名空间,这取决于您自己的情况:

Parse.User.extend

另外,我确实看到你有&lt; Parameter type =“xml”&gt;。对我来说,我花了几个小时来完成类似的查询并错过了 type =“xml”。 MSDN上似乎没有详细记录该属性。