wininet,winhttp,xmlhttprequest,ServerXmlHttpRequest各版本區(qū)別及對比
- 2017-10-16 08:00:00
- monkey_me 轉(zhuǎn)貼
- 9547
Access或Excel VBA要對網(wǎng)頁操作,必須要使用http,就要使用以下4種對象。
wininet,winhttp,xmlhttprequest,ServerXmlHttpRequest各版本區(qū)別
一、標(biāo)準(zhǔn)API接口WinINet(Microsoft Windows Internet)和WinHTTP(Microsoft Windows HTTP)
實(shí)現(xiàn)Http訪問,微軟提供了二套API:WinINet, WinHTTP(分別封裝于system32目錄下的wininet.dll和winhttp.dll內(nèi))二者主要區(qū)別在于后者更為安全和穩(wěn)定,可以說WinHTTP是WinINet的升級版
二、COM對象XMLHttpRequest和WinHttpRequest和ServerXMLHTTPRequest
XMLHttpRequest是基于WinInet封裝的,而WinHttpRequest和ServerXMLHTTPRequest則是基于WinHTTP封裝的所以三者的穩(wěn)定性屬XMLHttpRequest為最差封裝成COM形式主要是為了方便js vbs等腳本的調(diào)用,還具有易書寫、降低開發(fā)難度等許多特點(diǎn)把
三、對象版本和封裝位置
1、XMLHttpRequest對象版本和對應(yīng)的封裝dll文件
Microsoft.XMLHTTP 對應(yīng) msxml.dll
MSXML2.XMLHTTP 對應(yīng) msxml2.dll
MSXML2.XMLHTTP.3.0 對應(yīng) msxml3.dll
MSXML2.XMLHTTP.4.0 對應(yīng) msxml4.dll
MSXML2.XMLHTTP.5.0 對應(yīng) msxml5.dll(此版本是伴隨office2007發(fā)布的,所以目錄下可能找不到該版本的dll)
MSXML2.XMLHTTP.6.0 對應(yīng) msxml6.dll
如上各個dll的發(fā)布一般都是以補(bǔ)丁的形式發(fā)布,win7默認(rèn)都集成了吧
2、ServerXMLHTTP對象版本和對應(yīng)的封裝dll文件
Msxml2.ServerXMLHTTP 對應(yīng) msxml2.dll(win7自帶,下同!)
Msxml2.ServerXMLHTTP.3.0 對應(yīng) msxml3.dll
Msxml2.ServerXMLHTTP.4.0 對應(yīng) msxml4.dll
Msxml2.ServerXMLHTTP.5.0 對應(yīng) msxml5.dll
Msxml2.ServerXMLHTTP.6.0 對應(yīng) msxml6.dll
3、WinHttpRequest對象WinHttp.WinHttpRequest.5.1 對應(yīng) Winhttp.dll
(如上高版本的通常穩(wěn)定性會好一點(diǎn))
四、對象成員(屬性、方法、事件等),主要優(yōu)缺點(diǎn)
XMLRequest成員參考缺點(diǎn):和瀏覽器掛鉤,大多情況下會共享cookies,session,不支持單獨(dú)設(shè)置代理優(yōu)點(diǎn):和瀏覽器掛鉤,大多情況下會共享cookies,session
ServerXMLHTTP成員參考缺點(diǎn):系統(tǒng)沒有對應(yīng)dll的情況下程序需要外gua一個dll文件優(yōu)點(diǎn):脫離瀏覽器,使用代理方便
WinHttpRequest成員參考缺點(diǎn):暫無優(yōu)點(diǎn):脫離瀏覽器,使用代理方便
五、總結(jié)
如果你對WinInet或Winhttp比較熟悉的話當(dāng)然推薦直接使用標(biāo)準(zhǔn)接口,但同樣要付出的代價就是書寫更多的代碼,記住更多的參數(shù)就個人開發(fā)經(jīng)驗(yàn)而言還是推薦大家使用WinHttpRequest對象,微軟封裝的COM還是很優(yōu)秀的,應(yīng)該足以應(yīng)付大多數(shù)要求了
你的目標(biāo)地址應(yīng)該是https的吧。用下面的代碼試試:
1
2
3
4
|
'...
set http = Server.CreateObject("Msxml2.ServerXMLHTTP.3.0")
http.setOption(2) = 13056
'...
|
ServerXMLHTTP與XMLHTTP區(qū)別和介紹
本文回答有關(guān) ServerXMLHTTP 對象的一些常見問題。
更多信息
1. 什么是 ServerXMLHTTP?
ServerXMLHTTP 為不同 Web 服務(wù)器之間的服務(wù)器安全 HTTP 訪問提供方法和屬性。您可以使用此對象在不同的 Web 服務(wù)器之間交換 XML 數(shù)據(jù)。
2. 如何安裝 ServerXMLHTTP?
ServerXMLHTTP 隨 Microsoft XML Parser (MSXML) 版本 3.0 或更高版本提供。您可以從以下 Microsoft Developer Network (MSDN) 網(wǎng)站下載并安裝 MSXML 3.0:
http://www.microsoft.com/downloads/details.aspx?amp;displaylang=en&familyid=8167837e-0983-4988-99a4-377ef5c0da2e&displaylang=en (http://www.microsoft.com/downloads/details.aspx?amp;displaylang=en&familyid=8167837e-0983-4988-99a4-377ef5c0da2e&displaylang=en)
3. ServerXMLHTTP 具有什么平臺要求?
ServerXMLHTTP 支持僅在安裝 Microsoft Windows 2000 的計算機(jī)上或者在安裝帶 Microsoft Internet Explorer 5.01(或更高版本)的 Microsoft Windows NT 4.0 的計算機(jī)上提供。它在其他平臺(如 Microsoft Windows 95 和 Microsoft Windows 98)上將失敗。
由于 XMLHTTP 內(nèi)部使用 WinInet,所以不支持在服務(wù)器端應(yīng)用程序(例如 Active Server Pages (ASP))、宿主在 COM+ 中的組件,或 Windows 服務(wù)中使用 XMLHTTP。 有關(guān)其他信息,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應(yīng)的文章:
238425 (http://support.microsoft.com/kb/238425/) 不支持在服務(wù)中使用 WinInet
4. XMLHTTP 和 ServerXMLHTTP 之間的區(qū)別是什么?
XMLHTTP 為客戶端應(yīng)用程序而設(shè)計,并依賴于基于 Microsoft Win32 Internet (WinInet) 而構(gòu)建的 URLMon。ServerXMLHTTP 為服務(wù)器應(yīng)用程序而設(shè)計,并依賴于新的 HTTP 客戶端堆棧 WinHTTP。ServerXMLHTTP 提供了可靠性和安全性,并且是服務(wù)器安全的。有關(guān)更多信息,請參見 MSXML 軟件開發(fā)工具包 (SDK) 文檔。
5. 如何在 XMLHTTP 和 ServerXMLHTTP 之間做出選擇?
正如其名稱所示,ServerXMLHTTP 推薦用于服務(wù)器應(yīng)用程序,而 XMLHTTP 推薦用于客戶端應(yīng)用程序。XMLHTTP 具有一些優(yōu)點(diǎn),如支持緩存和自動發(fā)現(xiàn)代理。它可以在 Windows 95 和 Windows 98 平臺上使用,并且非常適合單用戶桌面應(yīng)用程序。
6. 什么是代理配置實(shí)用工具?
WinHTTP 代理配置實(shí)用工具 Proxycfg.exe 允許將 WinHTTP 配置為通過代理服務(wù)器訪問 HTTP 和 HTTPS 服務(wù)器。由于 ServerXMLHTTP 組件依賴于 WinHTTP 代理設(shè)置,因此在部署和安裝使用 WinHTTP 的應(yīng)用程序的過程中,管理員可以使用 Proxycfg.exe 實(shí)用工具。有關(guān)更多信息,請參見下面的 Microsoft 知識庫文章:
289481 (http://support.microsoft.com/kb/289481/) 可能需要運(yùn)行 Proxycfg 工具以使 ServerXMLHTTP 正常工作
7. ServerXMLHTTP 是否支持 SSL 和數(shù)字證書?
ServerXMLHTTP 和 XMLHTTP 組件在 MSXML3 中對 HTTPS 的支持比較有限。具體說就是,它們不完全支持用于身份驗(yàn)證的安全套接字層 (SSL) 證書。這些組件雖然支持 HTTPS 協(xié)議,但如果服務(wù)器要求客戶端證書,請求將會失敗。
ServerXMLHTTP 在 MSXML 3.0 Service Pack 1 中包括了 SSL 證書支持。
8. ServerXMLHTTP 有什么優(yōu)點(diǎn)? ? 通過使用 ServerXMLHTTP,可以在本地和遠(yuǎn)程系統(tǒng)之間以流或 XML 文檔的形式交換 XML 數(shù)據(jù)。
? 由于基礎(chǔ)協(xié)議為 HTTP 或 HTTPS,因此可以在防火墻后的系統(tǒng)之間交換數(shù)據(jù)。
? ServerXMLHTTP 可用于從不同的環(huán)境(如 Active Server Pages (ASP)、Microsoft Visual Basic 和 Microsoft Visual C++)發(fā)送 HTTP 請求。
9. ServerXMLHTTP 存在什么限制?
可同時存在于單一進(jìn)程中的 ServerXMLHTTP 實(shí)例數(shù)主要取決于可用于系統(tǒng)上應(yīng)用程序的內(nèi)存大小。但是,其他因素(如 CPU 處理能力或者可用的套接字連接)會進(jìn)一步限制可以同時處于活動狀態(tài)的實(shí)例數(shù)。
就 MSXML 3.0 而言,可同時存在于單一進(jìn)程中的最大實(shí)例數(shù)為 5,460。
10. 在哪里可以找到有關(guān) ServerXMLHTTP 的更多信息?
本文的大部分信息都取自 MSXML SDK,它可以從以下 MSDN 網(wǎng)站的 XML 部分下載:
http://msdn.microsoft.com/xml/default.asp (http://msdn.microsoft.com/xml/default.asp)
此站點(diǎn)提供關(guān)于 MSXML 技術(shù)的最新信息。
1.ServerXmlHttp
定義:ServerXMLHTTP 為不同 Web 服務(wù)器之間的服務(wù)器安全 HTTP 訪問提供方法和屬性。您可以使用此對象在不同的 Web 服務(wù)器之間交換 XML 數(shù)據(jù)。
被Microsoft XML Parser (MSXML) 版本 3.0 或更高版本提供,并且不支持windows95和windows98環(huán)境,支持windows2000,安裝ie5的windows NT,windows2003以上版本,windows xp,vista等等系統(tǒng)。顧名思義他是使用在server端的組建。
SSL支持:
ServerXMLHTTP 組件在 MSXML3 中對 HTTPS 的支持比較有限。具體說就是,它們不完全支持用于身份驗(yàn)證的安全套接字層 (SSL) 證書。這些組件雖然支持 HTTPS 協(xié)議,但如果服務(wù)器要求客戶端證書,請求將會失敗。
ServerXMLHTTP 在 MSXML 3.0 Service Pack 1 中包括了 SSL 證書支持。
優(yōu)點(diǎn):
通過使用 ServerXMLHTTP,可以在本地和遠(yuǎn)程系統(tǒng)之間以流或 XML 文檔的形式交換 XML 數(shù)據(jù);由于基礎(chǔ)協(xié)議為 HTTP 或 HTTPS,因此可以在防火墻后的系統(tǒng)之間交換數(shù)據(jù);ServerXMLHTTP 可用于從不同的環(huán)境(如 Active Server Pages (ASP)、Microsoft Visual Basic 和 Microsoft Visual C++)發(fā)送 HTTP 請求。
缺陷:
同時存在于單一進(jìn)程中的 ServerXMLHTTP 實(shí)例數(shù)主要取決于可用于系統(tǒng)上應(yīng)用程序的內(nèi)存大小。但是其他因素(如 CPU 處理能力或者可用的套接字連接)會進(jìn)一步限制可以同時處于活動狀態(tài)的實(shí)例數(shù)。就MSXML 3.0 而言,可同時存在于單一進(jìn)程中的最大實(shí)例數(shù)為5460。
值得注意的特性----一小時超時:
如果你的目標(biāo)url實(shí)際上不存在,使用瀏覽器訪問的時候會發(fā)生“找不到服務(wù)器或是發(fā)生dns錯誤”那么使用serverxmlhttp訪問的時候可能會遇到長時間得不到response。
解決方案--設(shè)置超時時間
resolveTimeout = 10000 ‘ 解析DNS名字的超時時間,10秒
connectTimeout = 10000 ‘ 建立Winsock連接的超時時間,10秒
sendTimeout = 120000 ‘ 發(fā)送數(shù)據(jù)的超時時間,120秒
receiveTimeout = 60000 ' 接收response的超時時間,60秒
xmlHttp.setTimeouts resolveTimeout, connectTimeout, sendTimeout, receiveTimeout
For Example:
BeginTimer = Timer()
BeiginTime = Now()
On error resume next
dim xmlHttp As ServerXmlHttp
Set xmlHttp = New ServerXmlHttp
resolveTimeout = 10000 ' 解析DNS名字的超時時間,10秒
connectTimeout = 10000 ' 建立Winsock連接的超時時間,10秒
sendTimeout = 120000 ' 發(fā)送數(shù)據(jù)的超時時間,120秒
receiveTimeout = 60000 ' 接收response的超時時間,60秒
'xmlHttp.setTimeouts resolveTimeout, connectTimeout, sendTimeout,
receiveTimeout
uRL ="http://202.118.89.4:4090/2333.asp"
xmlHttp.Open "POST", sURL, False
xmlHttp.send "1212312"EndTimer = Timer()
TimeSpan_Send = EndTimer - BeginTimer
EndTime = Now()
msgbox uRL & " okay!TimeSpan=" & CStr(TimeSpan_Send) & ";start:" & BeiginTime & ";EndTime:" & EndTime
2.XMLHttp
與ServerXmlHttp相對應(yīng)他是使用在client端的組建,由于 XMLHTTP 內(nèi)部使用 WinInet,所以不支持在服務(wù)器端應(yīng)用程序(例如 Active Server Pages (ASP))、宿主在 COM+ 中的組件,或 Windows 服務(wù)中使用 XMLHTTP。
優(yōu)點(diǎn):
XMLHTTP 具有一些優(yōu)點(diǎn),如支持緩存和自動發(fā)現(xiàn)代理。它可以在 Windows 95 和 Windows 98 平臺上使用,并且非常適合單用戶桌面應(yīng)用程序。
支持SSL:
XMLHTTP 組件在 MSXML3 中對 HTTPS 的支持比較有限。具體說就是,它們不完全支持用于身份驗(yàn)證的安全套接字層 (SSL) 證書。這些組件雖然支持 HTTPS 協(xié)議,但如果服務(wù)器要求客戶端證書,請求將會失敗。
3.ServerXmlHttp和XmlHttp的區(qū)別
XMLHTTP 為客戶端應(yīng)用程序而設(shè)計,并依賴于基于 Microsoft Win32 Internet (WinInet) 而構(gòu)建的 URLMon。ServerXMLHTTP 為服務(wù)器應(yīng)用程序而設(shè)計,并依賴于新的 HTTP 客戶端堆棧 WinHTTP。ServerXMLHTTP 提供了可靠性和安全性,并且是服務(wù)器安全的。
Function Post(url)
Dim postData,textResponse
postData="user=xxxx&password=******"
Set ServerXmlHttp =Server.CreateObject("MSXML2.ServerXMLHTTP")
ServerXmlHttp.open "POST", url ,false
'ServerXmlHttp.setTimeouts 10000,10000,10000,30000
ServerXmlHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
ServerXmlHttp.send postData
If ServerXmlHttp.status = 200 Then
textResponse = ServerXmlHttp.responseText
Else
textResponse="0"
End If
Set ServerXmlHttp = Nothing
End Function
Microsoft.XMLHTTP
不建議使用,奶奶級的老到快沒牙了,當(dāng)然你簡單地請求一下響應(yīng)一個源代碼,用倒也無所謂.
Msxml2.XMLHTTP
這個是在Microsoft.XMLHTTP之后發(fā)布的,所以穩(wěn)定性要比好很多,所以叫Msxml2 =Microsoft XML 2
以上二個是和IE同內(nèi)核的,他們的COOKIE和緩存是和IE共用的,要是你能解決跨域問題,用IE登錄某站后,再用他們登錄也會是登錄狀態(tài)的.所以他們和IE一樣是有本地緩存的,同一網(wǎng)頁緩存未過期,請求過一次再次請求會很快.因?yàn)檫@時是直接讀取了緩存數(shù)據(jù).這也是為什么有些人用這個組件發(fā)生,網(wǎng)頁數(shù)據(jù)已刷新,運(yùn)行代碼卻更新不及時的原因.
WinHttp.WinHttpRequest.5.1
微軟基于服務(wù)器數(shù)據(jù)交流發(fā)布的組件,是獨(dú)立于IE的,也是沒有本地緩存的,所以會比上面二者慢.
但他卻比上面二者都要新也更強(qiáng)壯一點(diǎn),強(qiáng)壯也是相對性的.總是都是較老的組件了,而且這個組件有Option選項設(shè)置.功能更強(qiáng)大點(diǎn),可以發(fā)送COOKIE.
注意還有個MSXML2.ServerXMLHTTP,也是基于服務(wù)器的,不過在VB VBA中同樣可以引用,使用方法和WinHttp.WinHttpRequest.5.1類似
xmlHttp.open("GET",requestUrl,false);第三個參數(shù)true 和false的詳細(xì)區(qū)別是什么?
false就是等待有返回數(shù)據(jù)的時候再繼續(xù)往下走,還沒有得到數(shù)據(jù)的時候就會卡在那里,直到獲取數(shù)據(jù)為止。
true就是不等待,直接返回,這就是所謂的異步獲取數(shù)據(jù)
到msdn上面去看了一下,可能的原因是serverxmlhttp服務(wù)器之后通信是要一種信認(rèn)機(jī)制的,而我的個人電腦上沒有配置代理,所以serverxmlhttp對像可以生成,不發(fā)生錯誤,但是服務(wù)器之間通信確存在問題,所以出現(xiàn)這種情況.如果這樣就不方便了,所以沒有選用它,而選用變通的方式.
- office課程播放地址及課程明細(xì)
- Excel Word PPT Access VBA等Office技巧學(xué)習(xí)平臺
- 將( .accdb) 文件格式數(shù)據(jù)庫轉(zhuǎn)換為早期版本(.mdb)的文件格式
- 將早期的數(shù)據(jù)庫文件格式(.mdb)轉(zhuǎn)換為 (.accdb) 文件格式
- KB5002984:配置 Jet Red Database Engine 數(shù)據(jù)庫引擎和訪問連接引擎以阻止對遠(yuǎn)程數(shù)據(jù)庫的訪問(remote table)
- Access 365 /Access 2019 數(shù)據(jù)庫中哪些函數(shù)功能和屬性被沙箱模式阻止(如未啟動宏時)
- Access Runtime(運(yùn)行時)最全的下載(2007 2010 2013 2016 2019 Access 365)
- Activex控件或Dll 在某些電腦無法正常注冊的解決辦法(regsvr32注冊時卡?。?/a>
- office使用部分控件時提示“您沒有使用該ActiveX控件許可的問題”的解決方法
- RTF文件(富文本格式)的一些解析
- Access樹控件(treeview) 64位Office下出現(xiàn)橫向滾動條不會自動定位的解決辦法
- Access中國樹控件 在win10電腦 節(jié)點(diǎn)行間距太小的解決辦法
- EXCEL 2019 64位版(Office 2019 64位)早就支持64位Treeview 樹控件 ListView列表等64位MSCOMMCTL.OCX控件下載
- VBA或VB6調(diào)用WebService(直接Post方式)并解析返回的XML
- 早期PB程序連接Sqlserver出現(xiàn)錯誤
- MMC 不能打開文件C:/Program Files/Microsoft SQL Server/80/Tools/Binn/SQL Server Enterprise Manager.MSC 可能是由于文件不存在,不是一個MMC控制臺,或者用后來的MMC版
- sql server連接不了的解決辦法
- localhost與127.0.0.1區(qū)別
- Roych的淺談數(shù)據(jù)庫開發(fā)系列(Sql Server)
- sqlserver 自動備份對備份目錄沒有存取權(quán)限的解決辦法
- 安裝Sql server 2005 express 和SQLServer2005 Express版企業(yè)管理器 SQLServer2005_SSMSEE
聯(lián)系人: | 王先生 |
---|---|
Email: | 18449932@qq.com |
QQ: | 18449932 |
微博: | officecn01 |