vbscript возвращает пустые данные
Вопрос
Я использую vbscript .vbs в планировщике Windows.
Пример кода:
objWinHttp.Open "POST", http://bla.com/blabla.asp, false
objWinHttp.Send
CallHTTP= objWinHttp.ResponseText
strRESP= CallHTTP(strURL)
WScript.Echo "after doInstallNewSite: " & strRESP
Проблема:blabla.asp выполняет задачу, на выполнение которой требуется около 1-2 минут.Он должен вернуть "успех", когда задача будет выполнена.Но он возвращает пустой результат на сервер vbs.(короче обычного времени для завершения работы.Затем я иду проверить, выполнено ли задание, ответ тоже "да".
Я обнаружил, что это происходит, когда для выполнения задачи требуется больше времени.
Является ли это слабостью vbs?Помогите!!!
Решение
Вы можете указать тайм-ауты для компонента winhttp:
objWinHttp.SetTimeouts 5000, 10000, 10000, 10000
Он принимает 4 параметра:Разрешите timeout, ConnectTimeout, SendTimeout и receiveTimeout.Все 4 являются обязательными и выражаются в миллисекундах (1000 = 1 секунда).Значения по умолчанию следующие:
- Время выхода разрешения:ноль (без тайм-аута)
- Время выхода соединения:60 000 (одна минута)
- Время отправки истекает:30 000 (30 секунд)
- Время ожидания приема истекло:30 000 (30 секунд)
Поэтому я предлагаю увеличить время получения
Другие советы
Что конкретно такое objHTTP?
Просматривая журнал целевого сервера, был ли получен запрос?
Я не могу найти это в журнале сервера.
objWinHTTP - это стандартный протокол для отправки вызова и ожидания ответа.
Я действительно пытался использовать PHP и curl для выполнения всего процесса, но потерпел неудачу.Причина:PHP является частью компонента в Windows server.Когда дело доходит до глобальных привилегий и перемещения папки с файлами, это контролируется Windows server.Так что я сдаюсь и использую vbs.
objWinHTTP - это что-то вроде curl в PHP.
мне кажется, что выполнение запроса на занимает слишком много времени, и у сервера истекает время ожидания.Я полагаю, что тайм-аут по умолчанию для скриптов asp составляет 90 секунд, поэтому вам может потребоваться настроить это значение в IIS или в вашем скрипте, чтобы сервер дольше ждал до истечения времени ожидания.
От http://msdn.microsoft.com/en-us/library/ms525225.aspx:
Свойство AspScriptTimeout задает (в секундах) значение по умолчанию продолжительность времени, которое страницы ASP позволяют сценарию выполняться до завершения работы сценария и записи события в Журнал событий Windows.Скрипт ASP может переопределить это значение с помощью свойства ScriptTimeout ASP встроенного объекта сеанса.Свойство ScriptTimeout позволяет вашему ASP приложению устанавливать более высокое значение тайм-аута скрипта .Например, вы можете использовать этот параметр для настройки времени ожидания после того, как конкретный пользователь установит допустимый сеанс, войдя в систему или заказав продукт.