7 asynchronous serverxmlhttp asp-classic
这是要点:
我打算用asp打电话,我不关心响应.我只想发起呼叫,我不希望页面等待响应.根据文档,它应该看起来像这样:
dim xmlhttp : set xmlhttp = Server.CreateObject("MSXML2.ServerXMLHTTP")
xmlhttp.Open "POST", url, true '' setting the 'asynchronous' option to 'true'
xmlhttp.setRequestHeader "Content-Type", "application/soap+xml; charset=utf-8"
xmlhttp.setRequestHeader "Content-Length", Len(XMLData)
xmlhttp.send XMLData
Run Code Online (Sandbox Code Playgroud)
这在同步调用时很有效,但当我将ansynchronous选项翻转为'true'时,什么都不会触发.我可以从互联网上收集到的是用户执行以下操作:
While xmlhttp.readyState <> 4
xmlhttp.waitForResponse 1000
Wend
Run Code Online (Sandbox Code Playgroud)
如果你在等待回应,我是否真的疯了似乎不再是异步电话?
xmlhttp.waitForResponse 1在发送之后将该行放置正确将导致请求触发,但同样,我不想等待一秒钟.
有什么想法吗?
Ant*_*yok 13
今天我遇到了同样的问题.我通过使用"Microsoft.XMLHTTP"对象解决了它.
dim xmlhttp
set xmlhttp = Server.CreateObject("Microsoft.XMLHTTP")
xmlhttp.Open "POST", url, true
xmlhttp.Send ""
Run Code Online (Sandbox Code Playgroud)
现在,请求以异步方式发送,目标URL被命中.希望有所帮助.
这里的关键问题是,如果您不等待并且脚本结束,则ServerXMLHTTP组件会自行销毁,并在此过程中中止未完成的请求.您无法保证当时请求的位置.
例如,如果您的服务器没有轮到发送到目标服务器,它将看到它不再需要而不是麻烦.
即使已与目标服务器建立连接,也可能尚未向处理程序提供请求.在提交资源以完成请求之前,Web服务器通常会检查客户端是否仍处于连接状态.如果它看到您的连接已被删除,则无需完成请求.
换句话说,没有可靠的方法在经典ASP中异步执行此操作,它只是不是为处理那种事情而设计的.你可以获得的最好的是在你的脚本继续使用别的东西时做其他事情(如果你还有其他东西可以使用),但是,我甚至不建议这样,因为ASP中的异步WinHTTP是不稳定的.