8

これは私のASPコードです

<%
http = server.createobject("microsoft.xmlhttp")
http.open "post", servleturl, false
http.setrequestheader "content-type", "application/x-www-form-urlencoded"
http.setrequestheader "accept-encoding", "gzip, deflate"
http.send  "request=" & sxml
http_response = http.responsetext
%>

応答が 15 秒以内に来ない場合、タイムアウトを作成する必要があります。

4

2 に答える 2

18

次のように「SetTimeouts」を呼び出して、同期リクエストを使い続けることもできます。

<%
Dim http

Set http = Server.CreateObject("MSXML2.ServerXMLHTTP")
http.SetTimeouts 600000, 600000, 15000, 15000
http.Open "post", servleturl, false
http.SetRequestHeader "content-type", "application/x-www-form-urlencoded"
http.SetRequestHeader "accept-encoding", "gzip, deflate"
http.Send  "request=" & sxml

http_response = http.responsetext
%>

ドキュメントについては、こちらを参照してください。

パラメータは次のとおりです。

setTimeouts (long resolveTimeout, long connectTimeout, long sendTimeout, long receiveTimeout)

setTimeouts メソッドは、open メソッドの前に呼び出す必要があります。オプションのパラメータはありません。

于 2012-12-27T14:36:56.593 に答える
10

呼び出し後にインスタンスのwaitForResponseメソッドを使用するのが適切な方法です。 また、 を使用するには、メソッドの 3 番目のパラメーターを設定して非同期呼び出しを行う必要があります。ServerXMLHTTP.Send
.WaitForResponseTrue.Open

Const WAIT_TIMEOUT = 15
Dim http
Set http = Server.CreateObject("MSXML2.ServerXMLHTTP")
    http.open "POST", servleturl, True 'async request
    http.setrequestheader "content-type", "application/x-www-form-urlencoded"
    http.setrequestheader "accept-encoding", "gzip, deflate"
    http.send  "request=" & sxml
    If http.waitForResponse(WAIT_TIMEOUT) Then 'response ready
        http_response = http.responseText
    Else 'wait timeout exceeded
        'Handling timeout etc
        'http_response = "TIMEOUT" 
    End If
Set http = Nothing
于 2012-12-27T14:00:27.300 に答える