找回密码
 加入
搜索
查看: 6170|回复: 10

[网络通信] Wininet WinHttp XmlHttp com对象,我混乱了

[复制链接]
发表于 2013-2-19 21:34:43 | 显示全部楼层 |阅读模式
本帖最后由 zcsgamer 于 2013-2-19 21:54 编辑

这些好像都能实现网络功能,比如get、post什么的,但是一些是api,一些是com对象。特别是winhttp,有udf winhttp.au3,也有com对象WinHttp.WinHttpRequest.5.1,其他几个是否也是这样我也说不清楚,当然我上面的理解也有可能是全错。xmlhttp分Microsoft.XMLHttp、MSXML2.XMLHTTP,还有一个ServerXMLHTTP。

在网上搜索了些资料,但并不完全,感觉混乱更深了,所以有没有人能让我醍醐灌顶一下?万分感谢。
发表于 2013-2-20 17:51:45 | 显示全部楼层
一、标准API接口WinINet(Microsoft Windows Internet)和WinHTTP(Microsoft Windows HTTP)
实现Http访问,微软提供了二套API:WinINet, WinHTTP(分别封装于system32目录下的wininet.dll和winhttp.dll内)
二者主要区别在于后者更为安全和稳定,可以说WinHTTP是WinINet的升级版
LZ所提的UDF WinHTTP.au3就是直接调用标准接口写成的自定义函数库文件

二、COM对象XMLHttpRequest和WinHttpRequest和ServerXMLHTTPRequest
XMLHttpRequest是基于WinInet封装的,
而WinHttpRequest和ServerXMLHTTPRequest则是基于WinHTTP封装的
所以三者的稳定性属XMLHttpRequest为最差
封装成COM形式主要是为了方便js vbs等脚本的调用,还具有易书写、降低开发难度等许多特点把

三、对象版本和封装位置
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的发布一般都是以补丁的形式发布,win7默认都集成了吧
2、ServerXMLHTTP对象版本和对应的封装dll文件
Msxml2.ServerXMLHTTP 对应 msxml2.dll(win7自带,下同!)
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

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

四、对象成员(属性、方法、事件等),主要优缺点
IXMLRequest成员参考
缺点:和浏览器挂钩,大多情况下会共享cookies,session,不支持单独设置代理
优点:和浏览器挂钩,大多情况下会共享cookies,session
IServerXMLHTTP成员参考
缺点:系统没有对应dll的情况下程序需要外挂一个dll文件
优点:脱离浏览器,使用代理方便
WinHttpRequest成员参考
缺点:暂无
优点:脱离浏览器,使用代理方便

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

点评

总结得比较好,谢谢  发表于 2022-6-1 15:20
发表于 2013-2-20 08:52:49 | 显示全部楼层
同问。我只知道用,不知道为什么这么用。
发表于 2013-2-20 12:27:48 | 显示全部楼层
同问,我也很混乱的说,等待高人来解惑!
发表于 2013-2-20 15:04:15 | 显示全部楼层
简单先说下Wininet WinHttp XmlHttp的差别吧,未必100%正确,首先,xml是操作的对象,可以理解为前两者的封装(实际不是),wininet和winhttp其实差的不多,wininet更像是windows自己针对winhttp优化过或者是定制化的东西
 楼主| 发表于 2013-2-20 20:01:36 | 显示全部楼层
一、标准API接口WinINet(Microsoft Windows Internet)和WinHTTP(Microsoft Windows HTTP)
实现Http访问,微 ...
komaau3 发表于 2013-2-20 17:51



精华,学习,感谢分享!
发表于 2013-2-28 15:43:20 | 显示全部楼层
好东东,收藏下
发表于 2013-2-28 15:43:36 | 显示全部楼层
好东东,收藏下~~
发表于 2013-2-28 20:21:12 | 显示全部楼层
回复 5# komaau3
好文章啊,学习了
发表于 2013-3-23 13:48:52 | 显示全部楼层
5楼的 学习了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-3-28 23:19 , Processed in 0.085985 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表