转载 Msxml2.ServerXMLHTTP与Msxml2.XMLHTTP区别

1.ServerXmlHttp

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

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

SSL支持:

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

优点:

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

缺陷:

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

值得注意的特性----一小时超时:

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

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

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

connectTimeout = 10000    ‘ 建立Winsock连接的超时时间,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连接的超时时间,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 平台上使用,并且非常适合单用户桌面应用程序。

支持SSL:

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

3.ServerXmlHttp和XmlHttp的区别

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

 
转载地址:http://blog.sina.com.cn/s/blog_5067ef490101hm61.html
 
发布一个自己写的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
 
 
 
 
 
 

转载于:https://www.cnblogs.com/wonderfuly/p/3278974.html

### MSXML2.XMLHTTP 的使用方法及常见问题解决 #### 使用方法概述 `MSXML2.XMLHTTP` 是一种用于通过 HTTP 请求访问远程资源的对象。它通常用于 JavaScript 或 VBScript 中,允许客户端脚本向服务器发送请求并接收响应数据。此对象可以通过 `ActiveXObject` 创建。 以下是一个典型的代码示例展示如何使用 `MSXML2.XMLHTTP` 发送 GET 请求: ```javascript function fetchData(url) { var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP"); xmlhttp.open("GET", url, false); // 初始化 HTTP 请求 (同步模式) xmlhttp.send(); // 发送请求 return xmlhttp.responseText; // 获取返回的文本数据 } ``` 上述代码展示了如何创建一个 `MSXML2.XMLHTTP` 对象,并通过指定 URL 进行简单的 GET 请求[^2]。 --- #### 常见问题及其解决方案 ##### 1. 页面跳转问题 如果在实际应用中发现页面存在意外跳转的情况,则可能是因为默认使用的 `Microsoft.XMLHTTP` 不够稳定。此时建议替换为更可靠的 `MSXML2.ServerXMLHTTP` 来解决问题[^1]。 修改后的代码如下所示: ```javascript function fetchStableData(url) { var xmlhttp = new ActiveXObject("MSXML2.ServerXMLHTTP"); xmlhttp.open("GET", url, false); xmlhttp.send(); return xmlhttp.responseText; } ``` --- ##### 2. DLL 文件丢失问题 当尝试运行依赖于 `msxml2.dll` 的应用程序时,可能会遇到文件丢失或无法找到的错误提示。这通常是由于系统中缺少必要的动态链接库所致。以下是两种主要解决方式: - **手动下载缺失的 DLL 文件** 用户可以从可信站点下载对应版本的 `msxml2.dll` 并将其放置到目标程序所在的目录下,或者直接放到系统的 `%SystemRoot%\System32\` 路径中(对于 64 位操作系统还需考虑 WOW64 子目录)。完成操作后重启计算机即可生效][^[^34]。 - **重新安装相关组件** 如果确认问题是因未完全安装 Microsoft XML Core Services (MSXML),则推荐从官方网站获取最新版 MSXML 安装包进行全面修复[^5]。 --- ##### 3. 版本兼容性注意事项 不同版本间的差异可能导致功能异常。例如,在较新的环境中应优先选用 `"MSXML2.XMLHTTP.6.0"` 替代旧版本号以获得更好的性能和支持特性。具体实现调整如下: ```javascript try { var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP.6.0"); } catch(e) { try { var xmlhttp = new ActiveXObject("MSXML2.XMLHTTP.4.0"); } catch(ex) { alert("Failed to create XMLHttpRequest object."); } } ``` 以上逻辑能够有效应对多种环境下的实例化需求。 --- ### 总结 通过对 `MSXML2.XMLHTTP` 正确配置以及针对潜在错误采取适当措施,可以显著提升开发效率和用户体验质量。无论是切换至更为稳定的替代方案还是补充必要资源文件,均有助于保障项目顺利推进。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值