使用asp調用.net xml web services

來源:互聯網
上載者:User

(是不是實際上可以用這個辦法調用任何xml web services呢?高人答一下)
最近在做一個web services,由我來寫文檔。為了方便廣大asp使用者也可以使用我們的服務,特意在網上搜了半天,發現大致有下面兩個辦法來通過asp調用.net xml web services。
1. 使用soap toolkit 3.0
2. 使用xmlhttp
我來寫個總結,這樣以後大家如果遇到這樣的問題,如果用搜尋搜到我的頁面上,那立刻就可以實現自己的方案了。
1. 使用soap toolkit 3.0
如果網站建立在自己可以控制的伺服器,則可選擇安裝soap toolkit 3.0來使用。soap toolkit是微軟提供的web services解決方案。可以從下面的地址下載得到,它是免費的。
http://www.microsoft.com/downloads/details.aspx?familyid=c943c0dd-ceec-4088-9753-86f052ec8450&displaylang=en
下載後,安裝即可。
Asp我也只是幾年前寫過,現在已經淡忘了,所以,下面只是把基本的相關操作寫下來,再具體的例子,可以查看隨soap toolkit一起安裝的User Guide, 那裡面有專門的樣本。
基本流程為
 ‘建立一個MSSOAP.SoapClient30對象。
Set sc = CreateObject("MSSOAP.SoapClient30")
‘設定ServerHTTPRequest為true。
sc.ClientProperty("ServerHTTPRequest") = True
‘調用mssoapinit方法來完成對web services的引用
 sc.mssoapinit "http://192.168.10.199/WebService1/Service1.asmx?wsdl","","",""
‘開始調用web services提供的方法
msg=  sc.HelloIE("notus","kerry")
msg接收傳回值並進行下一步的處理.。我只測試了最基本的string類型,對其他複雜類型的接收,同樣,請查看User Guide.
mssoapinit接受4個參數。其中第一個為web services 的WSDL 地址。(The URL of the WSDL file that describes the services offered by the server or a string containing the WSDL document.)其他三個可選。
soap toolkit User Guide提供了更多的例子和詳細的文檔說明.
使用soap toolkit的好處很明顯,就是可以方便的使用web services的各種方法,而且其本身也帶有不錯的支援.缺點當然也很明顯,就是需要安裝,就這一點,估計大部分人就不會用了.

2. 使用xmlhttp
Set objHTTP = Server.CreateObject("MSXML2.XMLHTTP")
'注意,這裡不是指定wsdl地址,而是確定要使用的web services 方法
strWebserviceURL = "http://192.168.10.199/WebService1/Service1.asmx/HelloIE"
'設定參數及其值,這裡是比較麻煩的一點,最後構造的是一個類似於”msg1&msg2&msg3”的字串.
i="notus red"
ac="loves"
strRequest = "msg="+i+"&action="+ac
objHTTP.Open "POST", strWebserviceURL, False
'設定這個Content-Type很重要
objHTTP.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
‘發送資料到web sercices
objHTTP.Send(strRequest)
‘接收返回的資料
Set xmlDOC =Server.CreateObject("MSXML.DOMDocument")
bOK = xmlDOC.load(objHTTP.responseXML)
‘對資料進行處理
msg = xmlDOC.xml
bOK如果為true,則表示成功接收到了返回的資料.
看到這裡,大家也都明白了,這個其實就是直接post資料過去,然後再把返回資料取回來.貌似有點ajax的味道.
這個,據說是需要伺服器端支援用post/get訪問web services.也就是要在web.config中加入
<webServices>
<protocols>
<add name="HttpPost"/>
<add name="HttpGet"/>
</protocols>
這是一個通用的辦法,不需要安裝任何東西,可是比較麻煩.

具體這兩種方法的效果如何,我這裡還沒有上線驗證.但是我本地測試是可以的.過幾天上線測試後,如果有問題出現,會在回來補充.

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.