【问题标题】:Handling an MSXML timeout [duplicate]处理 MSXML 超时 [重复]
【发布时间】:2019-10-08 15:02:02
【问题描述】:

我们的一个网站偶尔会出现故障 - 后端需要重新启动。替代品尚未准备好投入生产,因此我创建了一个 VBS 脚本,它会在以下情况下轮询服务器并重新启动服务器:

a) HTTP 状态码 200,或 b) 页面加载,但在页面上找不到子字符串。

如果tomcat服务响应失败,HTTP状态检查超时;如果发生这种情况,我想调用一个函数。是否可以捕获和处理超时?这是我的相关代码片段的 sn-p。

xmlhttp.setOption 2, 13056
xmlhttp.open "get", "https://www.mywebsite.com/thisurl", false
xmlhttp.send

if xmlhttp.status <> 200 then
    call restartTomcat()
    call emailAlert()
end if

提前谢谢你。

【问题讨论】:

    标签: vbscript msxml serverxmlhttp


    【解决方案1】:

    很遗憾,您不能在 VBScript 中创建对象事件处理程序。

    也许您可以使用 HTTP 请求对象的.setTimeouts resolveTimeout, connectTimeout, sendTimeout, receiveTimeout 方法。在调用 send 方法之前添加它。参数说明如下:

    解决超时

    一个长整数。该值用于将主机名(例如“www.microsoft.com”)映射到 IP 地址;默认值是无限的,意味着没有超时。

    连接超时

    一个长整数。该值用于与目标服务器建立通信套接字,默认超时值为 60 秒。

    发送超时

    一个长整数。该值适用于将通信套接字上的单个请求数据包(如果有)发送到目标服务器。发送到服务器的大请求通常会被分解为多个数据包;发送超时适用于单独发送每个数据包。默认值为 30 秒。

    receiveTimeout

    一个长整数。该值适用于从目标服务器接收响应数据包。大响应将被分解成多个数据包;接收超时适用于从套接字中获取每个数据包。默认值为 30 秒。

    您可以在send 通话后检查当前的状态。这应该可以帮助您处理无响应的服务器。

    【讨论】:

    • 谢谢,明天早上我会做实验,看看我能拼出什么!
    • 完成了这项工作,谢谢。我添加了错误恢复行并指定了超时;这使我能够检查和操作 HTTP 状态代码或缺少它。
    • 很高兴听到这个消息。有机会时,请将问题标记为已回答!
    • 我一直在寻找这样做的选项,但找不到任何地方可以接受答案。我觉得很迟钝。
    • @user1421795 通常您可以单击答案左侧的灰色复选标记,在赞成/反对票总数下方。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-25
    • 2018-07-29
    • 2021-03-01
    相关资源
    最近更新 更多