Qt對WCF服務的訪問

來源:互聯網
上載者:User

     QtSOAP是Qt對標準SOAP協議的支援庫,遵循LGPL協議發布。現在公司的項目是基於微軟WCF的Webservice做的,之前是再將服務發布JSON格式,用戶端直接存取的,很簡單。但是現在WCF的人們都很忙,沒時間給修改這個東西。只好在用戶端來做工作支援WCF的Webservice。

WCF的Webservice和QtSoap支援的格式有所區別。將envelope命名空間修改為了"http://www.w3.org/2003/05/soap-envelope"
,新增加了"http://www.w3.org/2005/08/addressing"和

"http://schemas.datacontract.org/2004/07/"兩個命名空間。第一個是在頭部對Action和訪問地址的定義,第二個是body中對資料實體類命名空間的定義。     soap XML頭部新添加了Action和To節點屬於addressing命名空間,並且必須要有屬性s:mustUnderstand="1"。     soap XML Body結構為:                     |method(存取方法)                         |_class(參數實體類)                                 |_class field(屬性欄位)    屬性欄位如果為類,擇需要嵌套定義class和其下所有欄位。    WCF的節點定義順序似乎是有順序限制的。所以我通過對訪問的封包截獲按照其順序來定義SOAP的XML檔案。

QtSoap的結構中缺少addressing和實體類的定義,頭部沒有Action和To節點,只支援字串類型的方法參數添加,而不能支援物件類型,
他對方法節點下只能添加一級的Node。
這裡需要對頭部增加action和To的構造。構造好類的Node節點以字串的形式傳入,這裡注意,這裡Qt的Dom類會對<字元做轉義處理
為&lt;,在發送soap請求前需要將其替換成<才行。
這樣簡單的對WCF webservice的支援就修改完成了。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.