Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
XMLHTTPRequest timeout асинхронного запроса, необходимо сменить тип запроса с синхронного на асинхронный и добавить таймаут операции
 
Эти методы excel никак не признавал существующими для объекта
Код
.setTimeouts
.WaitForResponse
Погуглив решил попробовать поменять MSXML2.XMLHTTP на  WinHttp.WinHttpRequest.5.1
метод  setTimeouts отрабатывает как надо для синхронного запроса) собственно проблема решена,спасибо за помощь)
Код
Function SendRequest(Url, AppKey, Session, Data) As String
    On Error GoTo ErrorHandler:
    Dim xhr: Set xhr = CreateObject("WinHttp.WinHttpRequest.5.1" ) ' тут заменил  вот это CreateObject("MSXML2.XMLHTTP" )

    With xhr
        .setTimeouts 5000, 5000, 10000, 10000
        .Open "POST", Url & "/", False
        .setRequestHeader "X-Application", AppKey
        .setRequestHeader "Content-Type", "application/json"
        .setRequestHeader "Accept", "application/json"
        .send Data
    End With
    
    If Session <> "" Then
     xhr.setRequestHeader "X-Authentication", Session
    End If

    SendRequest = xhr.responseText   
    Set xhr = Nothing
    Exit Function
ErrorHandler:
End Function
Изменено: aluminii - 01.01.2015 14:41:57
XMLHTTPRequest timeout асинхронного запроса, необходимо сменить тип запроса с синхронного на асинхронный и добавить таймаут операции
 
Спасибо,но к сожалению, при таком варианте выход из функции происходит сразу,не дожидаясь прихода ответа от сервера...Необходимо чтобы выход из функции происходил только в двух случаях - либо ответ получен,либо неполучен в течении 5 секунд . Для этого я пытался использовать
Код
While xhr.readyState <> 4

 , но эффекта нет . Возможно как-то можно прикрутить onreadystatechange ,но пока не понимаю как
XMLHTTPRequest timeout асинхронного запроса, необходимо сменить тип запроса с синхронного на асинхронный и добавить таймаут операции
 
Уважаемые форумчане!
Имеется система : Win 7 - 64 , Excel 2007
Имеется код:
Код
Function SendRequest(Url, AppKey, Session, Data) As String
    On Error GoTo ErrorHandler:
    Dim xhr: Set xhr = CreateObject("MSXML2.XMLHTTP" )

    With xhr
        .Open "POST", Url & "/", False
        .setRequestHeader "X-Application", AppKey
        .setRequestHeader "Content-Type", "application/json"
        .setRequestHeader "Accept", "application/json"
    End With
    
    If Session <> "" Then
        xhr.setRequestHeader "X-Authentication", Session
    End If

    xhr.send Data
    
    Dim timing
    timing = 0
     While xhr.readyState <> 4
        xhr.waitForResponse 1
        timing = timing + 1
        Cells(19, 1).value = timing
    Wend
   
    SendRequest = xhr.responseText
    
    If xhr.Status <> 200 Then
        Err.Raise vbObjectError + 1000, "Util.SendRequest", "The call  was unsuccessful. Status code: " & xhr.Status & " " & xhr.statusText & ". Response was: " & xhr.responseText
    End If
 
    Set xhr = Nothing
    Exit Function
ErrorHandler:
    SendRequest = ""
End Function
        При использовании данного синхронного запроса возникает зависание excel если: разорвалось интернет соединение либо сервер не отвечает на запрос , что категорически неприемлимо для работы программы. Таймаута для синхронного запроса насколько я понял из интернет(я программист-любитель ,не пеняйте)) нет , при разрыве соединения он правда секунд 30(но это редко,да и слишком много необходимо максимум секунд 5) . Помогите , пожалуйста, сделать асинхронный запрос, с таймаутом в 5 сек, если ответа так и не поступило то необходимо повторить запрос .
Изменено: aluminii - 01.01.2015 06:26:37
Страницы: 1
Наверх