`
liufei.fir
  • 浏览: 685898 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

MSXML2.XMLHTTP

阅读更多
客户端程序编写免不了经常接触XMLHttpRequest对象。
微软的XHR实现的progid又是一串一串的。 烦人。抽一个中午时间,找了找资料,整理记录如下:

"Microsoft.XMLHTTP"
最早的XHR实现。微软官网上说这是MSXML 2.x系列版本的progid。
2.x 系列progid是不带版本号的。看起来简单清楚。
引用:
MSXML 2.6 was shipped with SQL Server 2000 and MDAC 2.6 and is provided in Windows or other service pack updates provided by Microsoft.

MSXML 2.6 installs in replace mode only.



"MSXML2.XMLHTTP"
MSXML 3.0 的progid,
"MSXML2.XMLHTTP.3.0"
也是MSXML 3.0 的,应该等价于MSXML2.XMLHTTP;这时,可能是感觉到那种不带版本号的progid,在升级后造成的兼容性问题,以后的更新版本的progid都可以带上版本好吗。
引用:
MSXML 3.0 is provided as a required component with a number of Microsoft products, such as Microsoft Visual Studio and Microsoft Office. It is also a system component for current versions of Microsoft Windows.

MSXML 3.0 SP2 or later installs in replace mode only. (Note: you do not need to run xmlinst.exe utility when updating to this version of MSXML 3.0)




"Msxml2.XMLHTTP.4.0"
此后的版本,都带上了版本号码,可能是为了应对程序员懒散的习惯(不喜欢带那个版本号),不提供以前那种无版本后缀的progid了。
引用:
MSXML 4.0 is a separate download that was released by Microsoft in October 2001. The latest or current service pack release of MSXML 4.0 is available through the Microsoft Web site. MSXML 4.0 must be installed separately and is not currently included with other Microsoft products.

MSXML 4.0 installs side-by-side with earlier versions of MSXML without affecting any existing functionality.


“Msxml2.XMLHTTP.5.0"
引用:
MSXML 5.0 for Microsoft Office Applications is only available with current versions of Microsoft Office.

MSXML 5.0 for Microsoft Office Applications installs side-by-side with earlier versions of MSXML without affecting any existing functionality.


"Msxml2.XMLHTTP.6.0"
引用:
MSXML 6.0 is a separate download that was released by Microsoft in November 2005. The latest or current service pack release of MSXML 6.0 is available through the Microsoft Web site. MSXML 6.0 must be installed separately. It is included with SQL Server 2005.

MSXML 6.0 installs side-by-side with earlier versions of MSXML without affecting any existing functionality.



这么多的实现,哪我们如何探测呢?一般来说,我们应该尽量采用更新的更常用的版本。
我的选择是(摘自JSI内核源码)::

js 代码

if(this.ActiveXObject && !this.XMLHttpRequest ){  
    var xmlHttpRequstActiveIds = [  
        "Microsoft.XMLHTTP"//IE5的,最早的XHR实现  
        ,"MSXML2.XMLHTTP"  
        //,"MSXML2.XMLHTTP.3.0"//应该等价于MSXML2.XMLHTTP  
        //,"Msxml2.XMLHTTP.4.0"  
        ,"Msxml2.XMLHTTP.5.0"  
        //,"Msxml2.XMLHTTP.6.0"  
        ];  
    var xmlHttpRequstActiveId  
    this.XMLHttpRequest = function(){  
        if(xmlHttpRequstActiveId){  
            return new ActiveXObject(xmlHttpRequstActiveId);  
        }else{  
            var i=xmlHttpRequstActiveIds.length;  
            while(i --){  
                try{  
                      var impl = new ActiveXObject(xmlHttpRequstActiveId = xmlHttpRequstActiveIds[i]);  
                      xmlHttpRequstActiveIds = null;  
                      return impl;  
                }catch (e){}  
            }  
        }  
    };  
}  



var xmlrequest;
function createXMLHttpRequest()
{
//对于Firefox和Opera等浏览器
if (window.XMLHttpRequest) {
       xmlrequest = new XMLHttpRequest();
    }
    else //对于IE浏览器
    {
    //将IE的不同XMLHttp实现声明数组
    var MSXML=['Msxml2.XMLHTTP.7.0','Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];
    //依次对每个XMLHTTP实现创建XMLHttpRequest对象
    for(var i=0;i<MSXML.length;i++)
    {
    try
    {
    xmlrequest=new ActiveXObject(MSXML[i]);
    break;
    }
    catch (ex) {
   }
    }
    }
}
分享到:
评论

相关推荐

    Microsoft ADO Msxml2.ServerXMLHTTP Msxml2.XMLHTTP 程序员参考手册中文版CHM

    《Msxml2.XMLHTTP 中文参考手册.chm》 《Msxml2.ServerXMLHTTP 中文参考手册.chm》 Msxml2.ServerXMLHTTP 对象 Member 成员 以下表格显示了ServerXMLHTTP对象的属性、方法、事件。 Properties 属性 responseBody ...

    MSXML2.XMLHTTP 800401F3 错误的解决方法

    此问题可能由多种原因引起,其中最常见的一个原因是服务器上缺少或者损坏了MSXML2.DLL文件,这是XMLHTTP对象所依赖的动态链接库。其他可能的原因包括权限问题、注册表错误或IIS(Internet Information Services)...

    利用MSXML2.XmlHttp和Adodb.Stream采集图片

    利用MSXML2.XmlHttp和Adodb.Stream 代码如下:&lt;!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”&gt; &lt;html xmlns=”...

    XMLHTTP对象参考手册

    客户端可以通过XmlHttp对象(MSXML2.XMLHTTP.3.0)向http服务器发送请求并使用微软XML文档对象模型Microsoft® XML Document Object Model (DOM)处理回应。 现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用...

    VFP上传文件到web服务器

    - 设置请求头,比如Content-Type为multipart/form-data,表示上传文件:`xmlHttp.setRequestHeader("Content-Type", "multipart/form-data")` - 将文件内容转换为二进制流,写入请求体:`xmlHttp.Send(fileData)` - ...

    msxml3.dll 错误

    - 下载并安装 MSXML4.0 Service Pack 2 的修复补丁(例如:KB832414_MSXML4.0_x86.exe)。 - 安装完成后重启计算机。 4. **清理 DNS 缓存**: - 在命令提示符中输入 `ipconfig /flushdns` 并按回车键。 - 这将...

    让Win7的WinHTTP支持TLS1.2,修复WinHttp.WinHttpRequest或msxml3.dll出现安全频道支

    2. **注册表调整**:可以通过修改注册表键值来强制WinHTTP使用TLS 1.2。打开注册表编辑器(regedit),导航到`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols`,在该...

    Microsoft.XMLHttp组件的属性方法

    这行代码在JavaScript中创建了一个XMLHTTP对象,你可以指定不同的MSXML版本号,例如MSXML2.XMLHTTP.3.0或MSXML2.XMLHTTP.6.0。 二、XMLHTTP的方法 1. `Open()`方法:用于初始化HTTP请求。参数包括请求类型(如GET或...

    VB获取网页源文件源码

    Dim xmlHttp As New MSXML2.XMLHTTP Dim url As String url = "http://example.com" ' 输入你要获取源码的网址 With xmlHttp .Open "GET", url, False .send If .Status = 200 Then ' 如果请求成功,状态码为...

    VB XMLHTTP 支持大文件分段与断点下载函数.rar

    2. **设置HTTP请求头**:使用XMLHTTP对象,我们需要设置适当的请求头,如`Range`,指定从哪个字节开始下载。例如,如果已下载了前1MB,`Range`头应设置为`bytes=1048576-`。 3. **发起请求**:使用XMLHTTP对象的`...

    VB6Get和POST请求异步处理请求

    Set xhr = CreateObject("MSXML2.XMLHTTP") xhr.Open "GET", "http://example.com", True ' True 表示异步请求 xhr.onreadystatechange = AddressOf HandleResponse xhr.Send End Sub Private Sub ...

    asp中使用MSXML2.ServerXMLHTTP实现异步请求例子

    以下将详细介绍如何在ASP中使用MSXML2.ServerXMLHTTP来实现异步请求,并分析常见的错误及解决办法。 首先,我们需要创建MSXML2.ServerXMLHTTP对象。在ASP中,这可以通过`Server.CreateObject`方法完成: ```...

    xmlhttp 乱码 比较完整的解决方法 (UTF8,GB2312 编码 解码)

    用XMLHTTP Post Form时的表单乱码有两方面的原因——Post表单数据时中文乱码;服务器Response被XMLHTTP不正确编码引起的乱码。... var oReq = new ActiveXObject(“MSXML2.XMLHTTP”); oReq.open(“POST”,”h

    测试空间是否支持XMLHTTP组件.docx

    "Msxml2.ServerXMLHTTP.3.0", "Msxml2.ServerXMLHTTP", "Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.5.0", _ "Msxml2.XMLHTTP.4.0", "Msxml2.XMLHTTP.3.0", "Msxml2.XMLHTTP") For i = 0 To UBound(oxml) Set ...

    vb6用的xmlhttp模块,get和post方式提交数据,异步获取,不卡死,十分好用

    2. `Send`方法:发送请求数据,如果是POST请求,可以传递POST数据。 3. `OnReadyStateChange`事件:当XMLHTTP对象的ReadyState属性发生变化时触发,通常在这里检查状态是否完成(ReadyState = 4),以及请求是否成功...

    Ajax原理分析及其实现的简单代码

    var versions = ['Microsoft.XMLHTTP', 'MSXML.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.7.0', 'Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2....

    xmlhttp对象_VC中调用XMLHTTP对象访问

    首先定义了一个指向`IXMLHTTPRequest`接口的智能指针`xmlrequest`,然后使用`CreateInstance`方法创建一个`Msxml2.XMLHTTP`对象实例。 5. **设置请求参数并发送请求**: ```cpp xmlrequest-&gt;open(_bstr_t("GET")...

    JAVABEAN连接数据库

    var aVersions=["MSXML2.XMLHttp.5.0","MSXML2.XMLHttp.4.0","MSXMLHttp.3.0","MSXML2.XMLHttp","Microsoft.XMLHttp"]; for(var i=0;i&lt;aVersions.length;i++) { try { var oXmlHttp=new ActiveXObject...

Global site tag (gtag.js) - Google Analytics