К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Проверить доступность сайта

Гость
0 - 05.02.2015 - 20:46
Есть интернет-ссылки (например http:\\82.34.2.1 или qwerty.asd.ru).
Как средствами 1С проверить доступна ли эта интернет-ссылка.
Задача в том, чтобы по таймеру проверять доступен ли сайт и в случае, если он "упадет" производить определенные действия.
Спасибо!



Гость
1 - 05.02.2015 - 22:53
Список "определенных действий" страшно интригует. Нельзя ли выложить?
Гость
2 - 05.02.2015 - 23:01
Так вроде как хттп запрос никто не отменял.
Uho
3 - 06.02.2015 - 10:27
HTTPОтвет (HTTPResponse)
КодСостояния (StatusCode)
Использование:

Только чтение.
Описание:

Тип: Число.
Код состояния (ответа) HTTP-сервера.
Подробности см. на: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html.

Доступность:

Тонкий клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).
Гость
4 - 07.02.2015 - 07:12
Это надо сделать на 7.7.
Гость
5 - 07.02.2015 - 11:43
Код:
Function Ping(IPАдрес)
   objShell = Новый COMОбъект("WScript.Shell") ;
    objScriptExec = objShell.Exec("ping.exe -n 1 " + IPАдрес) ;
    strPingResults = НРег(objScriptExec.StdOut.ReadAll());
     Возврат   Найти(strPingResults, "ttl=");
EndFunction
Гость
6 - 07.02.2015 - 13:52
Не подходит. Нужная страница сайта открывается в браузере, но не пингуется.
Гость
7 - 07.02.2015 - 14:05
Так и делай на 77
Так пойдет ? или нужно асинхронно ?

Скрипт=СоздатьОбъект("MSScriptControl.ScriptContro l");
Скрипт.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 Тогда
Сообщить("Страница "+УРЛ+" неотвечает. Пипец!","!!!");
КонецЕсли;
Состояние("Ждем...");
КонецЦикла;
Гость
8 - 07.02.2015 - 14:10
А что такое асинхронно :(
Гость
9 - 07.02.2015 - 14:13
Что бы адинес дальше работала, в то время как идет проверка.
Гость
10 - 07.02.2015 - 14:13
А как тут код вставлять чем нужно обрамить текст ?
Гость
11 - 07.02.2015 - 14:19
Текст обрамил :)
Ввел адрес ссылки
а в ответ
ХТТПЗапрос.Send()
{Справочник.Объекты.Форма.Модуль(28)**: WinHttp.WinHttpRequest: The operation timed out
Гость
12 - 07.02.2015 - 14:22
5-xxi >
тогда уж просче

Шел = СоздатьОбъект("WScript.Shell") ;
Если Шел.Run("ping.exe -n 1 -w 100 " + IPАдрес,0,-1)<>0 Тогда
Сообщить("Фигня какая то");
КонецЕсли;
Гость
13 - 07.02.2015 - 14:23
Писал выше. Страница не пингуется, но в интернет браузере открывается.
Через пинг не подходит.
Гость
14 - 07.02.2015 - 14:24
Ну и обрами "сенд" Попыткой Исключением, да и таймаут задается
Гость
15 - 07.02.2015 - 14:26
пример страницы - пинг не проходит, но она работает
http://www.dom-chehov.ru/online.asp?cam=1
Гость
16 - 07.02.2015 - 14:27
А как задать тайм-аут? :(
Гость
17 - 07.02.2015 - 14:27
ХТТПЗапрос.SetTimeouts(1000,1000,1000,1000);
Гость
18 - 07.02.2015 - 14:30
Не обижайся.
Не работал с ХТТП.
Куда это вставить? :))
Гость
19 - 07.02.2015 - 14:31
После создания объекта
Гость
20 - 07.02.2015 - 14:32
+ перед Опен
Гость
21 - 07.02.2015 - 14:38
Ошибку обработал:
Попытка
ХТТПЗапрос.Send();
Исключение
Сообщить("ОШИБКА!");
Возврат 0;
КонецПопытки;
Гость
22 - 07.02.2015 - 14:39
А что это проверяется?
Если _GetPerformanceCounter()-к>=2000 Тогда
Сообщить("Страница "+УРЛ+" неотвечает. Пипец!","!!!");
КонецЕсли;
Гость
23 - 07.02.2015 - 14:41
22-Pilot1C > Это если ресурс отвечает, а страничка не загружается (утрированно)
Гость
24 - 07.02.2015 - 14:44
Спасибо!!!
Гость
25 - 07.02.2015 - 14:47
Еще сбоит на
ХТТПЗапрос.Open("GET", УРЛ, 0);
{Справочник.Объекты.Форма.Модуль(16)**: WinHttp.WinHttpRequest: The URL is invalid
Обработаю Попытка-Исключение.
А как получить доступ к типу ошибки - The URL is invalid - чтобы ее вывести?
Гость
26 - 07.02.2015 - 14:51
...
Исключение
Сообщить(ОписаниеОшибки());
...
Гость
27 - 07.02.2015 - 15:04
Спасибо!!!
Гость
28 - 07.02.2015 - 15:37
А можно если страница требует авторизации передать через ХТТПЗапрос.SetRequestHeader
имя и пароль?
Гость
29 - 07.02.2015 - 15:43
Да, есть параметр
SetCredentials

если конечно это не авторизация в коде страницы, а серверная авторизация
Гость
30 - 07.02.2015 - 15:44
если в коде, то POST
Гость
31 - 07.02.2015 - 19:17
следующим шагом будет - определять видна ли картинка с камеры :)
Гость
32 - 07.02.2015 - 19:19
31-xxi > Легко.
Гость
33 - 08.02.2015 - 00:18
32-smaharbA > А как?
Гость
34 - 08.02.2015 - 00:40
33-Pilot1C > самое простое, сделать скрин и по нему маску, но это муторно (маску) немного и нужны допущения.
Да и не адинеснег я ), так иногда балуюсь.
Гость
35 - 08.02.2015 - 00:41
Вернее не то, что бы скрин (это крайний вариант), а "поймать" поток и из него кадр(ы).
Гость
36 - 08.02.2015 - 00:45
Пока еще мучаюсь не могу с авторизацией разобраться.
Гость
37 - 08.02.2015 - 00:55
36-Pilot1C > авторизация какая ? Серверная - когда окошко с запросом логина и пароля выходит (не на страничке) - тогда SetCredentials(...).

Если на сайте типо поля ввода, то надо получить форму из страницы, поля логина и пароля (могут по разному именоваться), установить переменные в заголовке и выполнить хттп.Опен(ПОСТ, УРЛ, 0);
Гость
38 - 08.02.2015 - 01:01
2-Й вариант.
Гость
39 - 08.02.2015 - 01:05
Тогда, если страница не меняется, в смысле не нужно большой универсальности, то задать переменные, типа

ХТТП.Open("POST", "http://...", -1);
ХТТП.Send("login=VfsaPupkin&password=SuperPuper");
...


К списку вопросов






Copyright ©, Все права защищены