2012-01-20 78 views
1
pXML= Product_Request 
set http= server.Createobject("MSXML2.ServerXMLHTTP") 
http.Open "GET", "http://test.com/Data_Check/Request.asp?XML_File=" & pXML , False 
http.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" 
http.send 

我需要与上面的ASP代码发送请求上述URL。但我不需要该服务器的响应。如何在不等待响应的情况下从XMLHTTP发送请求?

发送请求之后,等待响应。 如何写这个,以便它在等待响应时不会阻塞?

+0

顺便说一句,希望我每次看到Content-Type标头都发送一个“GET”请求时都要付费。由于根据定义,GET不包含任何内容,因此很少指定其类型。 – AnthonyWJones

+0

我的第一个想法是:com-visible .net组件来处理异步部分。 ASP经典中的异步是海森堡的境界。 –

回答

0

我不相信有一种方法,以确定您的请求成功无响应。那么,如何确定无响应和完全失败之间的区别?

+0

我需要发送第一个请求并转到下一个请求。我需要在我的另一台服务器上生成响应。对我来说问题是......第一次请求需要10秒才能获得重放,而第二个应答需要15秒才能获得重放。总共25秒。我需要在15秒内做到这一点... – user475464

+0

请求2是否要求请求1先完成? –

+0

我需要发送两个请求和两个请求的响应重量在一起..因为我需要在最短时间内完成响应 – user475464

1

您可以使用WinHTTPRequest对象,而不是直接(这是underlies ServerXMLHTTP的)。它有一个额外的方法可能是有用的WaitForResponse方法。

Set winHttpRequest = CreateObject("WinHttp.WinHttpRequest.5.1") 
winHttpRequest.Open "GET", "http://localhost/mypage.aspx", true 

winHttpRequest.Send 

''# Do other request normally here 

winHttpRequest.WaitForResponse() 

注意Open方法trueasync参数。在这种情况下,Send将在请求发送后但收到任何响应之前立即返回。您现在可以做其他事情,例如以正常同步方式发出其他请求。完成后,您可以通过呼叫WaitForResponse确保完成原始请求。

警告

  • 我从来没有在ASP这样做直接有可能在调用Open可能会抱怨,该脚本环境不“做异步调用”。
  • 你有一个假设,可以同时提出两个请求。如果他们是两个不同的服务器,那么这将是很好,如果不是它仍然可能罚款,但可能有其他复杂性。
  • 您正在向ASP页面发出请求,每个请求都会在该服务器上创建一个新会话,只是需要注意的一点。
  • 有我的一部分假设你是不是打电话到您的代码运行时,如果你是,你可能会走向一个线程池死锁在同一台服务器。
0

更改到异步开放请求(即第三个参数为true)。这将允许您同时提交两个请求。然后你等待两个响应到达。

pXML = Product_Request 
Set http = server.Createobject("MSXML2.ServerXMLHTTP") 
http.Open "GET", "http://test.com/Data_Check/Request.asp?XML_File=" & pXML , True 
http.Send 
Set http2 = server.Createobject("MSXML2.ServerXMLHTTP") 
http2.Open "GET", insert_code_for_your_second_url_here , True 
http2.Send 
http1.WaitForResponse 
http2.WaitForResponse 
相关问题