Vbscript msxml12.XMLHTTP 错误处理 [英] Vbscript msxml12.XMLHTTP error handling

查看:46
本文介绍了Vbscript msxml12.XMLHTTP 错误处理的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用这个 vbscript 代码来下载网页:

I use this vbscript code, to download web page:

Dim oXML
Set oXML = CreateObject("msxm12.XMLHTTP")
oXML.Open "GET", "mysite.com", False
oXML.Send

如果没有这样的网站,我会收到错误 80004005, Unspecified error at line "oXML.Open ..."

If there is no such web site, I get an error 80004005, Unspecified error at line "oXML.Open ..."

如何在 vbscript 中处理这个错误?我想捕获此错误并在 msgbox 中显示我的错误,即网页不可用.

How can I handle this error in vbscript? I want to catch this error and show msgbox with my error, i.e. web page is not available.

推荐答案

您的脚本中至少存在三个可能的故障点.

There are at least three possible points of failure in your script.

  1. CreateObject 可能会失败;例如如果您使用 msxml12(数字 1)而不是 msxml2(字母 l).此类错误应在开发过程中修复.
  2. .打开可能会失败;例如如果您使用mysite.com"而不是语法正确的 URL.如果您在运行时获取 URL,建议进行跳转前查看"检查,OERN 可用于捕获验证未找到的错误 URL.
  3. .发送可能失败;例如如果站点关闭或被放弃.对于 OERN 来说,这是一个明显的案例.

OERN 最重要的规则:保持本地和简短(OERN 和 OEG0 之间只有一条风险线).

The most important rule wrt OERN: Keep it local and short (Only one risky line between OERN and OEG0).

演示代码:

Option Explicit

Dim sUrl
For Each sUrl In Split("http://stackoverflow.com http://pipapo.org mysite.com")
    Dim oXML, aErr
'   Set oXML = CreateObject("msxm12.XMLHTTP")
    Set oXML = CreateObject("msxml2.XMLHTTP.6.0")
   On Error Resume Next
    oXML.Open "GET", sUrl, False
    aErr = Array(Err.Number, Err.Description)
   On Error GoTo 0
    If 0 = aErr(0) Then
      On Error Resume Next
       oXML.Send
       aErr = Array(Err.Number, Err.Description)
      On Error GoTo 0
       Select Case True
         Case 0 <> aErr(0)
           WScript.Echo "send failed:", aErr(0), aErr(1)
         Case 200 = oXML.status
           WScript.Echo sUrl, oXML.status, oXML.statusText
         Case Else
           WScript.Echo "further work needed:"
           WScript.Echo sUrl, oXML.status, oXML.statusText
       End Select
    Else
       WScript.Echo "open failed:", aErr(0), aErr(1)
    End If
Next

输出:

cscript 24863986.vbs
http://stackoverflow.com 200 OK
send failed: -2146697211 The system cannot locate the resource specified.

open failed: -2147012890 System error: -2147012890.

这篇关于Vbscript msxml12.XMLHTTP 错误处理的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆