我正在尝试创建一个具有 XML 数据源的 SSRS 报告,但被卡住了。
我有一个接受参数的 URL(下面,参数以Id
value命名param1
)并返回以下 XML 数据:
https://site1/test/GetInfo/param1
要么 https://site1/test/GetInfo?Id=param1
<Contract xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Dynamics.Ax.Application">
<Id>param1</Id>
<City>Los Angeles</City>
<Country>USA</Country>
<Customer>Customer1</Customer>
<State>WA</State>
<Street>150 Main Street</Street>
<Zip>99999</Zip>
</Contract>
这本身不是 Web 服务,因为它只是在 URI 处接受参数/查询,所以我相信这是一个 XML 文档。
在 SSRS 2016 Report Builder 中,我执行了以下操作:
XML
和 Connection string =创建了一个数据源https://site1/test/GetInfo
Text
,内容如下: <Query>
<Method Namespace="http://schemas.datacontract.org/2004/07/Dynamics.Ax.Application" Name="GetInfo">
<Parameters>
<Parameter Name="Id">
<DefaultValue>DefaultValue1</DefaultValue>
</Parameter>
</Parameters>
</Method>
</Query>
单击“确定”按钮完成数据集后,出现以下错误:
Could not create a list of fields for the query. Verify that you can connect to the data source and that your query syntax is correct.
Failed to execute web request for the specified URL.
Method Not Allowed: The remote server returned an error: (405) Method Not Allowed.
The remote server returned an error: (405) Method Not Allowed.
<Error><Message>The requested resource does not support http method 'POST'.</Message></Error>
查询中的方法名映射到类中的实际方法名,并且操作是一个GET
方法。
我已经有一段时间没有使用 XML 数据提供程序了,但我记得 XML 数据提供程序将对任何没有文件扩展名xml
(例如,http://www.example.com/mywebservice
)的URL 执行带有 SOAP 有效负载的 POST 。这种情况下的参数包含在SOAP 请求负载中。由于您没有 Web 服务,因此您的服务器可能不支持 HTTP 请求上的 POST 方法,这可能是您收到405 Method not allowed
错误的原因。
如果您xml
的 url 中有扩展名,则 XML 数据提供程序将执行 GET 请求并将参数包含在 URL 的查询字符串中(例如,http://www.example.com/mywebservice/myfile.xml?name=Joe
)。
如果您没有办法在服务器上处理这些参数,那么返回整个 XML 数据并进行表过滤可能会更容易。
或者,如果您有 Power BI Pro 帐户,则可以从 XML 数据创建Power BI 数据集,在 RB 中创建Power BI 数据集连接,然后在 Power BI 报表生成器中筛选 DAX 查询中的数据(注意 Power BI数据集连接仅在 Power BI 报表生成器和 Power BI Premium Capacities 中受支持,在 SSRS 或 PBIRS 中不受支持)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句