2012-01-20 112 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 
相關問題