2016-08-10 116 views
0

サーバーがハングしたり、送信しているHTTPリクエストに問題が発生しました。私はクラッシュからの私のマクロを避けるために、私の関数にタイムアウトコードを追加するのではなく、空の配列を返し、その後、私は、ユーザーにエラーメッセージを表示するためにそれを使用することができますすることができればだから私は...思っていたvbaのhttp要求でタイムアウトが発生する

Function helpRequest(stringQuery As String) As String() 
    Dim objRequest As MSXML2.XMLHTTP60 
    Dim O As MSHTML.HTMLDocument 
    Dim i As Integer 

    Dim asCells() As String 

    Dim contentType As String 
    Dim temp As String 

    If UCase(Right(stringQuery, 4)) = ".ASP" Then 
     stringQuery = stringQuery & "?Cache=" & CStr(Int(200000000000000# * Rnd)) 
    Else 
     stringQuery = stringQuery & "&Cache=" & CStr(Int(200000000000000# * Rnd)) 
    End If 
    contentType = "application/x-www-form-urlencoded; charset=UTF-8" 

    Set O = New HTMLDocument 
    Set objRequest = CreateObject("MSXML2.XMLHTTP.6.0") 

    With objRequest 
     .Open "GET", stringQuery, False 
     .send 

    End With 

    O.body.innerHTML = objRequest.responseText 
+0

'.readyState'を確認してください。 – Comintern

答えて

1

は、送信HTTPクエリの前に私に、pingサーバーに試してみて、私は実際responce値を受け取る場合

Dim xht As New ServerXMLHTTP 
    lPng = fn_Ping(sHst) 
    Select Case (lPng < 0) 
     Case True: lTmo = 500: Debug.Print fn_Err(-lPng) 
     Case False: lTmo = lPng + 100 'Debug.Print "Ping to " & sHost & " = " & lPng 
    End Select 
    With xht 
     Call .setTimeouts(lTmo, lTmo, lTmo, lTmo) ' Def (10, 10, 10, 10)? 
     Call .Open(sCmd, sURL, False) ' True ' async 
     lSta = .Status 
     Select Case lSta 
      Case 200'CheckRemoteURL = True 
       ' do something' 
      Case 202, 302 
       Stop 
      Case 404 
       Stop 
      Case Else 
       'CheckRemoteURL = False 
       Debug.Print .getAllResponseHeaders 
       Stop 
     End Select 
    End With 

にそれを渡します。

関連する問題