[1] [2] |
Проверить доступность сайта Есть интернет-ссылки (например http:\\82.34.2.1 или qwerty.asd.ru). Как средствами 1С проверить доступна ли эта интернет-ссылка. Задача в том, чтобы по таймеру проверять доступен ли сайт и в случае, если он "упадет" производить определенные действия. Спасибо! |
Список "определенных действий" страшно интригует. Нельзя ли выложить? |
Так вроде как хттп запрос никто не отменял. |
HTTPОтвет (HTTPResponse) КодСостояния (StatusCode) Использование: Только чтение. Описание: Тип: Число. Код состояния (ответа) HTTP-сервера. Подробности см. на: [url]http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html[/url]. Доступность: Тонкий клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер). |
Это надо сделать на 7.7. |
[code] Function Ping(IPАдрес) objShell = Новый COMОбъект("WScript.Shell") ; objScriptExec = objShell.Exec("ping.exe -n 1 " + IPАдрес) ; strPingResults = НРег(objScriptExec.StdOut.ReadAll()); Возврат Найти(strPingResults, "ttl="); EndFunction [/code] |
Не подходит. Нужная страница сайта открывается в браузере, но не пингуется. |
Так и делай на 77 Так пойдет ? или нужно асинхронно ? Скрипт=СоздатьОбъект("MSScriptControl.ScriptControl"); Скрипт.language="javascript"; УРЛ="http://www.yandex.ru/"; ХТТПЗапрос = СоздатьОбъект("WinHttp.WinHttpRequest.5.1"); Скрипт.AddObject("ХТТПЗапрос",ХТТПЗапрос); Скрипт.Eval("ХТТПЗапрос.Option(2)=1251"); ХТТПЗапрос.Open("GET", УРЛ, 0); ХТТПЗапрос.SetRequestHeader("Accept-Language", "ru"); ХТТПЗапрос.SetRequestHeader("Accept-Charset", "Windows-1251"); ХТТПЗапрос.SetRequestHeader("Content-Language", "ru"); ХТТПЗапрос.SetRequestHeader("Content-Charset", "Windows-1251"); ХТТПЗапрос.SetRequestHeader("Content-Encoding", "gzip, deflate"); ХТТПЗапрос.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=Windows-1251"); ХТТПЗапрос.SetRequestHeader("CACHE_CONTROL", "no-cache"); ХТТПЗапрос.SetRequestHeader("CONNECTION", "Keep-Alive"); ХТТПЗапрос.SetRequestHeader("USER_AGENT", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)"); ХТТПЗапрос.SetAutoLogonPolicy(0); ХТТПЗапрос.SetProxy(0); ХТТПЗапрос.Send(); к=_GetPerformanceCounter(); Пока ХТТПЗапрос.Status<>200 Цикл Если _GetPerformanceCounter()-к>=2000 Тогда Сообщить("Страница "+УРЛ+" неотвечает. Пипец!","!!!"); КонецЕсли; Состояние("Ждем..."); КонецЦикла; |
А что такое асинхронно :( |
Что бы адинес дальше работала, в то время как идет проверка. |
А как тут код вставлять чем нужно обрамить текст ? |
Текст обрамил :) Ввел адрес ссылки а в ответ ХТТПЗапрос.Send() {Справочник.Объекты.Форма.Модуль(28)**: WinHttp.WinHttpRequest: The operation timed out |
5-xxi > тогда уж просче Шел = СоздатьОбъект("WScript.Shell") ; Если Шел.Run("ping.exe -n 1 -w 100 " + IPАдрес,0,-1)<>0 Тогда Сообщить("Фигня какая то"); КонецЕсли; |
Писал выше. Страница не пингуется, но в интернет браузере открывается. Через пинг не подходит. |
Ну и обрами "сенд" Попыткой Исключением, да и таймаут задается |
пример страницы - пинг не проходит, но она работает [url]http://www.dom-chehov.ru/online.asp?cam=1[/url] |
А как задать тайм-аут? :( |
ХТТПЗапрос.SetTimeouts(1000,1000,1000,1000); |
Не обижайся. Не работал с ХТТП. Куда это вставить? :)) |
После создания объекта |
+ перед Опен |
Ошибку обработал: Попытка ХТТПЗапрос.Send(); Исключение Сообщить("ОШИБКА!"); Возврат 0; КонецПопытки; |
А что это проверяется? Если _GetPerformanceCounter()-к>=2000 Тогда Сообщить("Страница "+УРЛ+" неотвечает. Пипец!","!!!"); КонецЕсли; |
22-Pilot1C > Это если ресурс отвечает, а страничка не загружается (утрированно) |
Спасибо!!! |
Еще сбоит на ХТТПЗапрос.Open("GET", УРЛ, 0); {Справочник.Объекты.Форма.Модуль(16)**: WinHttp.WinHttpRequest: The URL is invalid Обработаю Попытка-Исключение. А как получить доступ к типу ошибки - The URL is invalid - чтобы ее вывести? |
... Исключение Сообщить(ОписаниеОшибки()); ... |
Спасибо!!! |
А можно если страница требует авторизации передать через ХТТПЗапрос.SetRequestHeader имя и пароль? |
Да, есть параметр SetCredentials если конечно это не авторизация в коде страницы, а серверная авторизация |
если в коде, то POST |
следующим шагом будет - определять видна ли картинка с камеры :) [IMG]http://savepic.su/4928282.png[/IMG] |
31-xxi > Легко. |
32-smaharbA > А как? |
33-Pilot1C > самое простое, сделать скрин и по нему маску, но это муторно (маску) немного и нужны допущения. Да и не адинеснег я ), так иногда балуюсь. |
Вернее не то, что бы скрин (это крайний вариант), а "поймать" поток и из него кадр(ы). |
Пока еще мучаюсь не могу с авторизацией разобраться. |
36-Pilot1C > авторизация какая ? Серверная - когда окошко с запросом логина и пароля выходит (не на страничке) - тогда SetCredentials(...). Если на сайте типо поля ввода, то надо получить форму из страницы, поля логина и пароля (могут по разному именоваться), установить переменные в заголовке и выполнить хттп.Опен(ПОСТ, УРЛ, 0); |
2-Й вариант. |
Тогда, если страница не меняется, в смысле не нужно большой универсальности, то задать переменные, типа ХТТП.Open("POST", "http://...", -1); ХТТП.Send("login=VfsaPupkin&password=SuperPuper"); ... |
Текущее время: 07:36. Часовой пояс GMT +3. | [1] [2] |