How do I fire an asynchronous call in asp classic and ignore the response?

Hexate picture Hexate · Oct 2, 2009 · Viewed 16.8k times · Source

Here's the gist:

I have a call I want to make in asp, and I do not care about the response. I just want to fire the call and I do not want the page to wait for the response. According to the documentation, it should look something like this:

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

This works peachy when calling synchronously, but when I flip the ansynchronous option to 'true', nothing fires. What I can gather from the internet is that users do something like the following:

While xmlhttp.readyState <> 4
    xmlhttp.waitForResponse 1000
Wend

Am I crazy in that this does not really seem like an asynchrous call anymore though if you are waiting for a response?

putting the line xmlhttp.waitForResponse 1 right after the send will cause the request to fire, but again, I don't want to wait a second.

Any thoughts?

Answer

Anton Palyok picture Anton Palyok · Aug 16, 2010

Today I got the same issue. I resolved it by using "Microsoft.XMLHTTP" object.

dim xmlhttp 
set xmlhttp = Server.CreateObject("Microsoft.XMLHTTP")
xmlhttp.Open "POST", url, true 
xmlhttp.Send ""

And now the request is sent asynchronously and target URL was hit. Hope that helps.