2012-01-20 12 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 

上記のURLの上記のaspコードでリクエストを送信する必要があります。しかし、私はそのサーバーからの応答は必要ありません。レスポンスを待たずにXMLHTTPからリクエストを送信するには?

要求を送信した後、応答を待ちます。 レスポンスを待っている間にブロックされないようにするにはどうすればいいですか?

+0

私はContent-Typeヘッダーが「GET」リクエストとともに送信されるのを見るたびに、私はいつもquidを書きます。定義上、GETは内容を保持していないので、その型を指定する点はほとんどありません。 – AnthonyWJones

+0

私の最初の考えは、非同期部分を処理するcom-visible .netコンポーネントです。 ASP classic内のAsyncはHeisenbugsの領域です。 –

答えて

0

あなたのリクエストが応答なしで成功したと判断する方法はないと思います。それでは、応答なしと完全な失敗の違いを判断するにはどうすればよいですか?

+0

私は第1の要求を送り、次の要求に進む必要があります。私は別のサーバーで生成する必要があります。私のための問題は..リプレイを得るために第1の要求を10秒間取って、第2の応答はリプレイを得るのに15秒かかる。合計25秒。私はこれを15秒後に行う必要があります... – user475464

+0

要求2は要求1が最初に完了することを要求しますか? –

+0

私は2つのリクエストの応答のために2つのリクエストとウェイトを一緒に送信する必要があります。なぜなら、私は最小時間でレスポンスを完了する必要があるからです。 – user475464

1

代わりにWinHTTPRequestオブジェクトを直接使用することができます(これは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方法はasyncパラメータのtrueを有しています。この場合、Sendは、要求が送信されてから応答が受信されるとすぐに戻ります。これで、他のリクエストを通常の同期方式で行うようなことができるようになりました。完了したら、WaitForResponseを呼び出して元の要求が完了したことを確認できます。

注意点

  • 私が直接Openへのコールは、スクリプト環境は、「非同期呼び出しを行う」しないと文句を言うかもしれないという可能性があるASPでこれを上のやったことがありません。
  • 2つの要求を同時に行うことは大丈夫であるという前提があります。 2つの異なるサーバーに接続すると、それでも問題はありませんが、他の複雑な問題があるかもしれません。
  • ASPページにリクエストしていますが、各リクエストはそのサーバー上に新しいセッションを作成します。
  • スレッドプールのデッドロックに向かう可能性がある場合は、自分のコードが実行されているサーバーと同じサーバーに呼び出さないという前提があります。
0

オープンリクエストを非同期(3番目のパラメータはTrue)に変更します。これにより、同時に2つのリクエストを提出することができます。次に、両方の応答が到着するのを待ちます。

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 
関連する問題