我在Windows调度程序中使用vbscript .vbs。
示例代码:
objWinHttp.Open "POST", http://bla.com/blabla.asp, false
objWinHttp.Send
CallHTTP= objWinHttp.ResponseText
strRESP= CallHTTP(strURL)
WScript.Echo "after doInstallNewSite: " & strRESP
问题:blabla.asp正在处理需要大约1-2分钟才能完成的任务。 任务完成后应返回“成功”。 但它将空结果返回给服务器vbs。 (比完成事情的正常时间短。然后我去检查任务是否完成,答案也是。
我发现当任务需要更长时间才能完成时会发生这种情况。
这是vbs的弱点吗? 帮助!
答案 0 :(得分:2)
您可以为winhttp组件指定超时:
objWinHttp.SetTimeouts 5000, 10000, 10000, 10000
它需要4个参数:ResolveTimeout,ConnectTimeout,SendTimeout和ReceiveTimeout。所有4都是必需的,以毫秒(1000 = 1秒)表示。默认值为:
所以我建议增加ReceiveTimeout
答案 1 :(得分:0)
具体是什么是objHTTP?
查看目标服务器的日志,是否收到了请求?
答案 2 :(得分:0)
我在服务器日志中找不到这个。
objWinHTTP是发送呼叫并等待响应的标准协议。
我确实尝试过使用PHP和curl来完成整个过程,但失败了。原因:PHP是Windows服务器中组件的一部分。当来到全局特权和文件夹移动时,它由Windows服务器控制。所以我放弃了,并使用vbs。
objWinHTTP就像PHP中的卷曲一样。
答案 3 :(得分:0)
听起来像请求需要太长时间才能完成,服务器正在超时。我相信asp脚本的默认超时是90秒,因此您可能需要在IIS或脚本中调整此值,以便服务器在超时之前等待更长时间。
来自http://msdn.microsoft.com/en-us/library/ms525225.aspx:
AspScriptTimeout属性 指定(以秒为单位)默认值 ASP页面允许的时间长度 脚本在终止之前运行 脚本和写一个事件到 Windows事件日志。 ASP脚本可以 使用。覆盖此值 ASP的ScriptTimeout属性 内置的Session对象。该 ScriptTimeout属性允许你的ASP 应用程序设置更高的脚本 超时值。例如,你可以 使用此设置调整超时 一旦特定用户建立了 通过登录或有效会话 订购产品。