2015-04-22 82 views
1

我在過去的兩週裏搜索了互聯網,並嘗試了很多不同的方式,我開始認爲這可能無法通過SSIS中的Web服務任務實現。我使用提供的WSDL在SSIS中創建了一個Web服務任務 - 請參見下面的截圖。SSIS Web服務任務XmlNode輸入POSSIBLE?

enter image description here

正如你可以看到這個Web服務方法的要求是包含了像這樣的過濾器選項的XML節點傳遞:

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

這種「FilterItems」節點是嵌套在另一個名爲「TemplateValues」的XML元素之間 - 查看肥皂體:

<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> 

正如你可以看到,我剛剛在元素和SOAPUI之間粘貼了xml,處理請求時沒有問題 - 那麼爲什麼SSIS Web服務任務不能處理這個相同的請求呢?

我的想法是,由於SSIS迫使我使用字符串變量來存儲某些字符正在被解析的xnlNode。下面是變量的結果,當我調試和運行Web服務任務:

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

調試結果表明,該報價已經越獄,我相信這是問題的一部分。這裏有一些其他的事情我已經試過:

&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傳遞(使用CDATA也試過)到一個變量。再次在運行時,轉義字符被添加進引號引起方法不執行。我發現很難相信這不是一個常見問題,並且沒有簡單的解決方法將XML傳遞到Web服務任務。這是SSIS中的錯誤還是僅僅是沒有實現的東西?幫助將非常感謝!

回答

0

看起來唯一的答案是將Web服務更改爲僅接受簡單類型作爲參數。我瀏覽了網頁,似乎沒有辦法通過Web服務任務中的輸入值動態創建用於消費的複雜類型。

另請參閱:Create complex-type variables for a Web Service Task

+0

是的我相信你是對的。我最終使用SOAP信封編寫腳本任務是SSIS,併成功地調用了Web服務。 – dc922