【问题标题】:SSIS Web Service Task XmlNode Input POSSIBLE?SSIS Web服务任务XmlNode输入可能吗?
【发布时间】:2015-04-22 16:03:31
【问题描述】:

过去两周我在互联网上搜索并尝试了很多不同的方法,以至于我开始认为这可能无法通过 SSIS 中的 Web 服务任务来实现。我使用提供的 WSDL 在 SSIS 中创建了一个 Web 服务任务 - 请参见下面的屏幕截图。

如您所见,此 Web 服务方法的要求是传入一个包含过滤器项的 XML 节点,如下所示:

<FilterItems><FilterItem FilterItemId="12345">4/20/2015 12:00:00 AM</FilterItem></FilterItems>

此“FilterItems”节点将嵌套在另一个名为“TemplateValues”的 XML 元素之间 - 请参见 soap 正文:

<soap:Body>
<GetReportResults xmlns="https://service.service.com">
  <username>string</username>
  <password>string</password>
  <reportId>int</reportId>
  <templateValues>xml</templateValues>
</GetReportResults>

我面临的问题是,当我在 SSIS 的变量列表中选择数据类型时,没有 XML 数据类型,所以我必须使用字符串。有趣的是,我可以使用 SOAPUI 并调用相同的方法而没有问题,只需传入:

<FilterItems><FilterItem FilterItemId="12345">4/20/2015 12:00:00 AM</FilterItem></FilterItems>

这是我可以使用的 SOAPUI 调用:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"      xmlns:ser="https://service.servicename.com">
   <soapenv:Header/>
   <soapenv:Body>
       <ser:GetReportResults>
         <!--Optional:-->
         <ser:username>username</ser:username>
         <!--Optional:-->
         <ser:password>12343</ser:password>
         <ser:reportId>000</ser:reportId>
         <!--Optional:-->
         <ser:templateValues>
            <FilterItems><FilterItem FilterItemId="12345">4/20/2015 12:00:00      AM</FilterItem></FilterItems>
         </ser:templateValues>
      </ser:GetReportResults>
    </soapenv:Body>
    </soapenv:Envelope>

如您所见,我刚刚在元素之间粘贴了 xml,SOAPUI 可以毫无问题地处理请求 - 那么为什么 SSIS Web 服务任务不能处理相同的请求呢?

我的想法是,由于 SSIS 迫使我使用字符串变量来存储正在解析某些字符的 xnlNode。以下是我调试和运行 Web 服务任务时变量的结果:

        Value   <FilterItems><FilterItem FilterItemId=\"12345\">4/20/2015 12:00:00 AM</FilterItem></FilterItems>    

调试结果显示引号已被转义,我相信这是问题的一部分。以下是我尝试过的其他一些事情:

传入完全编码的 XML(也尝试使用 CDATA):

&lt;FilterItems&gt;&lt;FilterItem FilterItemId=&quot;12345&quot;&gt;4/20/2015 12:00:00 AM&lt;/FilterItem&gt;&lt;/FilterItems&gt;

我还尝试创建一个 SQL 任务,执行时会抓取 xml 并将其添加到变量中。再次在运行时,为引号添加了转义字符,导致方法不执行。我很难相信这不是一个常见问题,并且没有简单的解决方法将 XML 传递到 Web 服务任务中。这是 SSIS 中的错误还是只是尚未实施的错误?帮助将不胜感激!

【问题讨论】:

    标签: c# xml web-services ssis


    【解决方案1】:

    看起来唯一的答案是将 Web 服务更改为仅接受简单类型作为参数。我搜索了网络,似乎没有办法动态创建复杂类型以供网络服务任务中的输入值使用。

    另请参阅:Create complex-type variables for a Web Service Task

    【讨论】:

    • 是的,我相信你是对的。我最终编写了一个脚本任务是使用 SOAP 信封的 SSIS,并成功调用了 Web 服务。
    猜你喜欢
    • 2013-04-05
    • 2010-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    • 2017-06-08
    相关资源
    最近更新 更多