安徽彩票大奖 欧洲百万乐透大奖 七星彩17049规律大奖 双色球中大奖领奖过程 3d近期中大奖故事 广州番禺中福彩大奖的 鸡男注定会中大奖 2016江苏彩民中大奖 趣彩网大奖网黑平台 大乐透4.97亿大奖 霍邱一彩民6元中双色球547万大奖 双色球黑龙江中大奖图 体育彩票中大奖名单 什么样的人能中大奖 彩票大奖作假

wininet,winhttp,xmlhttprequest,ServerXmlHttpRequest各版本区别及对比

2017-10-16 08:00:00
monkey_me
转贴
2590

Access或Excel VBA要对网页操作,必须要使用http,就要使用以下4种对象。

wininet,winhttp,xmlhttprequest,ServerXmlHttpRequest各版本区别

一、标准API接口WinINet(Microsoft Windows Internet)和WinHTTP(Microsoft Windows HTTP)

实现Http访问,微软提供了二套API:WinINet, WinHTTP(分别封装于system32目录下的wininet.dll和winhttp.dll内)二者主要区别在于后者更为安全和稳定,可以说WinHTTP是WinINet的升级版

二、COM对象XMLHttpRequest和WinHttpRequest和ServerXMLHTTPRequest

XMLHttpRequest是基于WinInet封装的,而WinHttpRequest和ServerXMLHTTPRequest则是基于WinHTTP封装的所以三者的稳定性属XMLHttpRequest为最差封装成COM?#38382;?#20027;要是为了方便js vbs等脚本的调用,还具有?#36164;?#20889;、降低开发难度等许多特点把

三、对象版本和封装位置

1、XMLHttpRequest对象版本和对应的封装dll文件

Microsoft.XMLHTTP 对应 msxml.dll

MSXML2.XMLHTTP 对应 msxml2.dll

MSXML2.XMLHTTP.3.0 对应 msxml3.dll

MSXML2.XMLHTTP.4.0 对应 msxml4.dll

MSXML2.XMLHTTP.5.0 对应 msxml5.dll(此版本是伴随office2007发布的,所以目录下可能找不到该版本的dll)

MSXML2.XMLHTTP.6.0 对应 msxml6.dll

如上各个dll的发?#23478;?#33324;都是以补丁的?#38382;?#21457;布,win7默认?#25216;?#25104;了吧

2、ServerXMLHTTP对象版本和对应的封装dll文件

Msxml2.ServerXMLHTTP 对应 msxml2.dll(win7?#28304;?#19979;同!)

Msxml2.ServerXMLHTTP.3.0 对应 msxml3.dll

Msxml2.ServerXMLHTTP.4.0 对应 msxml4.dll

Msxml2.ServerXMLHTTP.5.0 对应 msxml5.dll

Msxml2.ServerXMLHTTP.6.0 对应 msxml6.dll

3、WinHttpRequest对象WinHttp.WinHttpRequest.5.1 对应 Winhttp.dll

(如上高版本的通常稳定性会好一点)

四、对象成员(属性、方法、事件等),主要优缺点

XMLRequest成员参考缺点:和浏览器挂?#24120;?#22823;多情况下会共享cookies,session,不支持单独设置代理优点:和浏览器挂?#24120;?#22823;多情况下会共享cookies,session

ServerXMLHTTP成员参考缺点:系统没有对应dll的情况下程序需要外gua一个dll文件优点?#21644;?#31163;浏览器,使用代理方便

WinHttpRequest成员参考缺点:暂无优点?#21644;?#31163;浏览器,使用代理方便

五、总结

如果你对WinInet或Winhttp比较熟悉的话?#27604;?#25512;荐直接使用标准接口,但同样要付出的代价就是书写更多的代码,记住更多的参数就个人开发经验而言还是推荐大家使用WinHttpRequest对象,微软封装的COM还是很优秀的,应该足以应付大多数要求了



你的目标地址应该是https的吧。用下面的代码试试:

1
2
3
4
'...
set http = Server.CreateObject("Msxml2.ServerXMLHTTP.3.0")
http.setOption(2) = 13056
'...

ServerXMLHTTP与XMLHTTP区别和介绍


本文回答有关 ServerXMLHTTP 对象的一些常见问题。
更多信息
1. 什么是 ServerXMLHTTP?


ServerXMLHTTP 为不同 Web 服务器之间的服务器安全 HTTP 访问提供方法和属性。您可以使用此对象在不同的 Web 服务器之间交换 XML 数据。



2. 如何安装 ServerXMLHTTP?


ServerXMLHTTP 随 Microsoft XML Parser (MSXML) 版本 3.0 或更高版本提供。您可?#28304;?#20197;下 Microsoft Developer Network (MSDN) 网站下载并安装 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 具有什么?#25945;?#35201;求?


ServerXMLHTTP 支持仅在安装 Microsoft Windows 2000 的计算机上或者在安装带 Microsoft Internet Explorer 5.01(或更高版本)的 Microsoft Windows NT 4.0 的计算机上提供。它在其他?#25945;ǎ?#22914; Microsoft Windows 95 和 Microsoft Windows 98)上将失败。


由于 XMLHTTP 内部使用 WinInet,所以不支持在服务器端应用程序(例如 Active Server Pages (ASP))、宿主在 COM+ 中的组件,或 Windows 服务中使用 XMLHTTP。 有关其他信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
238425 (http://support.microsoft.com/kb/238425/) 不支持在服务中使用 WinInet

4. XMLHTTP 和 ServerXMLHTTP 之间的区别是什么?


XMLHTTP 为客户端应用程序而设计,并?#35272;?#20110;基于 Microsoft Win32 Internet (WinInet) 而构建的 URLMon。ServerXMLHTTP 为服务器应用程序而设计,并?#35272;?#20110;新的 HTTP 客户端堆栈 WinHTTP。ServerXMLHTTP 提供了可靠性和安全性,并且是服务器安全的。有关更多信息,请参见 MSXML 软件开发工具包 (SDK) 文档。

5. 如何在 XMLHTTP 和 ServerXMLHTTP 之间做出选择?


正如其名称所示,ServerXMLHTTP 推荐用于服务器应用程序,而 XMLHTTP 推荐用于客户端应用程序。XMLHTTP 具有一些优点,如支持缓存和自动发现代理。它可以在 Windows 95 和 Windows 98 ?#25945;?#19978;使用,并且非常适?#31995;?#29992;户桌面应用程序。



6. 什么是代理配置实用工具?


WinHTTP 代理配置实用工具 Proxycfg.exe 允许将 WinHTTP 配置为通过代理服务器访问 HTTP 和 HTTPS 服务器。由于 ServerXMLHTTP 组件?#35272;?#20110; WinHTTP 代理设置,因此在部署和安装使用 WinHTTP 的应用程序的过程中,管理员可以使用 Proxycfg.exe 实用工具。有关更多信息,请参见下面的 Microsoft 知识库文章:
289481 (http://support.microsoft.com/kb/289481/) 可能需要运行 Proxycfg 工具以使 ServerXMLHTTP 正常工作
7. ServerXMLHTTP 是否支持 SSL 和数?#31181;?#20070;?


ServerXMLHTTP 和 XMLHTTP 组件在 MSXML3 中对 HTTPS 的支持比较有限。具体说就是,它们不完全支持用于身份验证的安全套接字层 (SSL) 证书。这些组件虽然支持 HTTPS 协议,但如果服务器要求客户端证书,请求将会失败。


ServerXMLHTTP 在 MSXML 3.0 Service Pack 1 中包括了 SSL 证书支持。



8. ServerXMLHTTP 有什么优点? ? 通过使用 ServerXMLHTTP,可以在本地和远程系统之间以流或 XML 文档的?#38382;?#20132;换 XML 数据。
? 由于基础协议为 HTTP 或 HTTPS,因此可以在防火墙后的系统之间交换数据。
? ServerXMLHTTP 可用于从不同的环?#24120;?#22914; Active Server Pages (ASP)、Microsoft Visual Basic 和 Microsoft Visual C++)发送 HTTP 请求。

9. ServerXMLHTTP 存在什么限制?


可同时存在于单一进程中的 ServerXMLHTTP 实例数主要取决于可用于系统上应用程序的内存大小。但是,其他因素(如 CPU 处理能力或者可用的套接字连接)会进一?#36739;?#21046;可以同时处于活动状态的实例数。


就 MSXML 3.0 而言,可同时存在于单一进程中的最大实例数为 5,460。



10. 在哪里可以?#19994;?#26377;关 ServerXMLHTTP 的更多信息?


本文的大部?#20013;?#24687;都取自 MSXML SDK,它可?#28304;?#20197;下 MSDN 网站的 XML 部分下载:
http://msdn.microsoft.com/xml/default.asp (http://msdn.microsoft.com/xml/default.asp)
此站点提供关于 MSXML 技术的最新信息。




1.ServerXmlHttp

定义:ServerXMLHTTP 为不同 Web 服务器之间的服务器安全 HTTP 访问提供方法和属性。您可以使用此对象在不同的 Web 服务器之间交换 XML 数据。

被Microsoft XML Parser (MSXML) 版本 3.0 或更高版本提供,并且不支持windows95和windows98环?#24120;?#25903;持windows2000,安装ie5的windows NT,windows2003以上版本,windows xp,vista等等系统。顾名?#23478;?#20182;是使用在server端的组建。

SSL支持:

ServerXMLHTTP 组件在 MSXML3 中对 HTTPS 的支持比较有限。具体说就是,它们不完全支持用于身份验证的安全套接字层 (SSL) 证书。这些组件虽然支持 HTTPS 协议,但如果服务器要求客户端证书,请求将会失败。
ServerXMLHTTP 在 MSXML 3.0 Service Pack 1 中包括了 SSL 证书支持。

优点:

通过使用 ServerXMLHTTP,可以在本地和远程系统之间以流或 XML 文档的?#38382;?#20132;换 XML 数据;由于基础协议为 HTTP 或 HTTPS,因此可以在防火墙后的系统之间交换数据;ServerXMLHTTP 可用于从不同的环?#24120;?#22914; Active Server Pages (ASP)、Microsoft Visual Basic 和 Microsoft Visual C++)发送 HTTP 请求。

缺陷:

同时存在于单一进程中的 ServerXMLHTTP 实例数主要取决于可用于系统上应用程序的内存大小。但是其他因素(如 CPU 处理能力或者可用的套接字连接)会进一?#36739;?#21046;可以同时处于活动状态的实例数。就MSXML 3.0 而言,可同时存在于单一进程中的最大实例数为5460。

?#26723;?#27880;意的特性----一小时超时:

如果你的目标url实际上不存在,使用浏览器访?#23454;?#26102;候会发生“找不到服务器或是发生dns错误”那么使用serverxmlhttp访?#23454;?#26102;候可能会遇到长时间得不到response。

解决方案--设置超时时间

resolveTimeout = 10000   ‘ 解析DNS名字的超时时间,10秒

connectTimeout = 10000    ‘ 建立Winsock连?#25317;?#36229;时时间,10秒

sendTimeout = 120000     ‘ 发送数据的超时时间,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连?#25317;?#36229;时时间,10秒
sendTimeout = 120000     ' 发送数据的超时时间,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相对应他是使用在client端的组建,由于 XMLHTTP 内部使用 WinInet,所以不支持在服务器端应用程序(例如 Active Server Pages (ASP))、宿主在 COM+ 中的组件,或 Windows 服务中使用 XMLHTTP。

优点:

XMLHTTP 具有一些优点,如支持缓存和自动发现代理。它可以在 Windows 95 和 Windows 98 ?#25945;?#19978;使用,并且非常适?#31995;?#29992;户桌面应用程序。

支持SSL:

XMLHTTP 组件在 MSXML3 中对 HTTPS 的支持比较有限。具体说就是,它们不完全支持用于身份验证的安全套接字层 (SSL) 证书。这些组件虽然支持 HTTPS 协议,但如果服务器要求客户端证书,请求将会失败。

3.ServerXmlHttp和XmlHttp的区别

XMLHTTP 为客户端应用程序而设计,并?#35272;?#20110;基于 Microsoft Win32 Internet (WinInet) 而构建的 URLMon。ServerXMLHTTP 为服务器应用程序而设计,并?#35272;?#20110;新的 HTTP 客户端堆栈 WinHTTP。ServerXMLHTTP 提供了可靠性和安全性,并且是服务器安全的。

转载地址:http://blog.sina.com.cn/s/blog_5067ef490101hm61.html
发?#23478;?#20010;自己写的ASP POST

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
不建议使用,奶奶级的?#31995;?#24555;没牙了,?#27604;?#20320;简单地请求一下响应一个源代码,用?#25346;参?#25152;谓.
Msxml2.XMLHTTP
这个是在Microsoft.XMLHTTP之后发布的,所以稳定性要比好很多,所以叫Msxml2 =Microsoft XML 2
以上二个是和IE同内核的,他们的COOKIE和缓存是和IE共用的,要是你能解决跨域问题,用IE登录某站后,再用他们登?#23478;?#20250;是登录状态的.所以他们和IE一样是有本地缓存的,同一网页缓存未过期,请求过一次再次请求会很快.因为这时是直接读取了缓存数据.这也是为什么有些人用这个组件发生,网页数据已刷新,运?#20889;?#30721;却更新不及时的原因.
WinHttp.WinHttpRequest.5.1
微软基于服务器数据交流发布的组件,是独立于IE的,也是没有本地缓存的,所以会比上面二者慢.
但他却比上面二者?#23478;?#26032;也更强壮一点,强壮也是相对性的.总是都是较?#31995;?#32452;件了,而且这个组件有Option选项设置.功能更强大点,可以发送COOKIE.
注意还有个MSXML2.ServerXMLHTTP,也是基于服务器的,不过在VB VBA中同样可以引用,使用方法和WinHttp.WinHttpRequest.5.1类似


xmlHttp.open("GET",requestUrl,false);第三个参数true 和false的详细区别是什么?

false就是等待有返回数据的时候再继续往下走,还没有得到数据的时候就会卡在那里,直?#20132;?#21462;数据为止。

true就是不等待,直接返回,这就是所谓的异?#20132;?#21462;数据


到msdn上面去看了一下,可能的原因是serverxmlhttp服务器之后通信是要一?#20013;?#35748;机制的,而?#19994;?#20010;人电脑上没有配置代理,所以serverxmlhttp对像可以生成,不发生错误,但是服务器之间通信确存在问题,所以出现这种情况.如果这样就不方便了,所以没有选用它,而选用变通的方式.



分享
? 1999-2019 Office交流网?? 中山市天鸣科技发展有限公司 粤ICP备10043721号-5 SQL查询:19
内存占用:7.75MB
PHP 执行时间:0.21
双色球大奖2000年
安徽彩票大奖 欧洲百万乐透大奖 七星彩17049规律大奖 双色球中大奖领奖过程 3d近期中大奖故事 广州番禺中福彩大奖的 鸡男注定会中大奖 2016江苏彩民中大奖 趣彩网大奖网黑平台 大乐透4.97亿大奖 霍邱一彩民6元中双色球547万大奖 双色球黑龙江中大奖图 体育彩票中大奖名单 什么样的人能中大奖 彩票大奖作假
王者传说正式版单人通关开局设置流程完美攻略 奇才vs湖人 疯狂之七怎么玩 白雪公主与七个小矮人 电竞电脑排行榜前十名 冒险丛林APP下载 灰熊vs活塞 逆水寒捏脸 幸运熊猫走势图 dnf漫游银弹加多少