之前也許是因為根本不用的原因吧,,,根本沒有想過Qt訪問WebService的方式....
要解決這個問題,因為Qt現行版沒有提供直接存取的類庫...首先是一些必備知識,
我連的伺服器是用VS2010建的只有 string helloworld() 和string getHello(string str)兩個介面的iis伺服器.
Qt對xml文檔操作和WebService原理,特點和通訊方式....這個可以看http://user.qzone.qq.com/380411306/blog/1273588842?ptlang=2052&ADUIN=952147772&ADSESSION=1273588927&ADTAG=CLIENT.QQ.2785_FriendTip_QzoneFolder.0
針對這個我一共進行了三種嘗試,,,
第一種,
先用Qt的QNetworkAccessManager類實現與WebService建立串連,,
然後用QNetworkReply類實現與WebService的通訊,當然這種通訊只是非同步流的通訊,,,,你會收到WebService的整個XML網頁,,,
接著,就是自己根據SOAP協議規則解析XML,按,SOAP的協議規則和WebService通訊
最後,把自己寫好的請求XML序列化,發給WebService,
現在為止,第一種嘗試並沒有成功,,因為做這個嘗試的時候,對SOAP還不是很不瞭解,,,不過可以肯定的是,這種辦法是可行的...
第二種,
用了第三方 C++的gsoap開源庫,這是一位網友提供的,,,他的部落格:http://blog.csdn.net/tingsking18/archive/2010/04/07/5456831.aspx裡有詳細的介紹....
第三種,
我在Qt開源社區裡找到了,還沒有發布的qsoap源碼,,,這個可以經過編譯,配置,直接在Qt程式中運用,而且很方便..
可以在這裡找到它:http://qt.nokia.com/products/appdev/add-on-products/catalog/4/Utilities/qtsoap
它裡面提供了兩種運用方式:
分別是,源碼引入和先編譯產生.dll,再引入程式...
相關類:
QtSoapMessage
QtSoapQName
QtSoapType
QtSoapArray
QtSoapArrayIterator
QtSoapStruct
QtSoapStructIterator
QtSoapSimpleType
QtSoapHttpTransport