我在VB宏(excel)中使用MSXML.HTTPRequest对象与HTTP服务器通信。问题是它会间歇性地抛出以下错误。
msxml3.dll -2146697211系统找不到指定的资源。
我注意到我的系统发生了这种情况,当网络出现故障时,我的客户抱怨它在他的机器上间歇性地发生了。鉴于他的系统安装了Windows 7并且有时正在运行,我不认为这是正确库未安装的问题。他曾在几个网络上试过它,但它仍然失败了。
Function xmlHTTPPost(strURL, strData)
Dim objHttp
On Error Resume Next
xmlHTTPPost = ""
Set objHttp = CreateObject("Microsoft.XMLHTTP")
If Err.Number <> 0 Then
Err.Clear
Set objHttp = CreateObject("MSXML2.XMLHTTP")
End If
If Err.Number <> 0 Then
MsgBox "Error creating XMLHTTP object"
Err.Clear
Exit Function
End If
objHttp.Open "GET", strURL, False
If Err.Number <> 0 Then
Err.Clear
Set objHttp = Nothing
Exit Function
End If
objHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objHttp.setRequestHeader "User-Agent", "Mozilla Compatible (MS IE 3.01 WinNT)"
objHttp.Send
If Err.Number <> 0 Then
MsgBox "Error " & Hex(Err.number) & " sending to server:" & vbCrLf & Err.description
xmlHTTPPost = "ERROR: " & Err.Source & " " & Err.Number & " " & Err.Description
Err.Clear
Else
xmlHTTPPost = objHttp.responseText
End If
Set objHttp = Nothing
End Function
它在我的盒子上完美运行,这是一个Windows 7 + Microsoft Office 2007安装。
我在网上搜索了很多,并且含糊地提到了两个原因。
我真的很感激任何帮助。
答案 0 :(得分:3)
现在我可以通过将方法从GET更改为POST来解决这个问题。错误是间歇性的,但幸运的是它开始出现在我的开发机器上,并且将HTTP方法更改为POST就可以了。虽然应该发生这种情况很奇怪,但它确实奏效了。
答案 1 :(得分:1)
我有时也会在我的服务器中获取此信息。一旦我重新启动服务器,它就会开始正常工作并再次间歇性地失败。我不得不重新启动。错误消息是随机和间歇性的。
答案 2 :(得分:1)
FWIW,我得到了同样的错误。正如它(最终)结果一样,XML文件中存在错误。愚蠢的我,我原以为微软会提供更有意义的错误信息。如果出现此错误,请尝试使用许多可用的XML检查程序之一。
答案 3 :(得分:0)
使用MSXML v6.0,MSXML v3.0不再随Office或Windows一起分发。 v6.0仅与Windows 7一起发布。但Office 2010+不再带有任何版本的MSXML。这解释了您的问题的原因。
维基百科也对其进行了描述:http://en.wikipedia.org/wiki/MSXML