Ⅰ 如何使用WebServices和SOAP進行數據傳輸
本文向您介紹了如何使用WebServICes和SOAP(SimpleObjectACCessProtocol,簡單對象反問協議)進行數據傳輸,並且通過討論示例代碼對在PocketPC上傳輸數據的方法進行了仔細分析。
在當前版本的ADOCE(V3.1)中,我們必須找到另一種處理WebService(SOAP)調用返回數據的方法。在本文中,我將同大家對一些示例代碼進行探討,看看如何使用從一個SOAP響應中返回的數據。該示例假定Recordset(記錄集)按照ChrisDengler文中所介紹的Solution2封裝方式進行封裝。因為Chris在他的文章中已經對這種解決方案的實現方式進行了詳細描述,在本文中我就不再對所需的伺服器端代碼多加敘述了。
一個測試客戶端程序
在我們開始討論代碼之前,讓我們首先了解一下使用WebServices傳輸數據對我們有哪些好處。在下面這個窗體中,我創建了一個簡單的測試用客戶端程序,該程序將兩個不同的WebServices結合到了一個MicrosofteMbeddedVisualBasic應用程序之中。:
SOAP客戶端測試程序示例
窗體頂部的TextBox(文本框)用來選擇所需的WebService(描述)。這個URI(UniversalResourceIdentifier)是使用SOAPToolkitWizard創建的SDL(服務描述語言,ServicesDescriptionLanguage)文件。
我已經創建了第一個WebService,您可以調用這個WebService(使用頂部的「Get」按鈕),這個WebService主要用於測試目的。它調用一個簡單的WebService,將您提交的名和姓作為參數連接到了一個包含完整名稱的字元串中。
當您輸入一個已經在伺服器上進行了定義的DSN(數據源名稱)以及一個針對該DSN的SQL(結構化查詢語言)查詢,然後點擊「Get」按鈕時,它開始變得更有意思了。DSN和SQL作為一個參數傳遞給了WebService,然後以XML格式返回一個ADORecordset。數據經過分析後,填充在窗體底部的ListView控制項中。
在正確對伺服器進行了設置的前提下,現在,您可以方便地訪問您的企業數據了。您無需任何第三方產品--甚至不使用ADOCE--即可輕松做到這一點。對此,我的一位同事說,「這實在令人驚訝!」
代碼討論
以下代碼為cmdGetRecordset_Click事件的代碼(當您按下窗體底部的「Get」按鈕時運行):
DimlavParameters(2)AsVariant
DimlsAsString
DimlitmAsListItem
DimiAsInteger
'Setparameters
lavParameters(1)=txtDSN.Text
lavParameters(2)=txtSQL.Text
'MakeSOAPCall
ls=SOAPCall(txtURI.Text,"GetRecordset",lavParameters,chkShowPACkets=1)
'ClearandaddListViewheadings
lvwRecordset.ColumnHeaders.Clear
lvwRecordset.ColumnHeaders.Add1,,"ArtNo",700
lvwRecordset.ColumnHeaders.Add2,,"Description",1450
lvwRecordset.ColumnHeaders.Add3,,"Price",850,lvwColumnRight
'ClearandfillListViewfromXML(withRecordsetEmulation)
lvwRecordset.ListItEMS.Clear
XMLRSOpenls
DoWhileNotXMLRSEOF
Setlitm=lvwRecordset.ListItems.Add(,,XMLRS("ArticleNo"))
轉載僅供參考,版權屬於原作者。祝你愉快,滿意請採納哦
Ⅱ winform如何向webservice傳數據
思路是從本地讀取一個文件的,得到這個文件的位元組數組,然後把位元組數組傳給到Web Service的方法,如果是多文件上傳的話,Web Service接受的方法應該變為一個List<byte []>,在客戶端更新Web Service後調用這個方法的時候,發現這個參數的類型變成了一個
ArrayOfBase64Binary類型,很奇怪,這個具體是什麼意思我沒太查過,不過操作起來也蠻簡單的,聲明一個對象,然後obj.Add(byte[])就可以了,經過這樣一個步驟以後基本的框架就出來了,下面說一些細節的東西:
1. Web Service 與客戶端的數據交換是有個限制的, 解決方法如下
節點下面即 可,maxRequestLength可以按照你的需要變化,但是千萬不到吧這個數寫的太大,那樣的話即便在Web Service Build的時候不報錯也會在在客戶端引用的時候就會報錯.
2. FileStream會 根據文件類型進行自動轉化,當我做到這的時候陷入了一個誤區,在文件格式轉換的問題上繞圈