![]() |
|
v7: Чтение веб страницы | ☑ | ||
---|---|---|---|---|
0
uno-group
16.08.16
✎
10:59
|
Не пойму под 1 юзерами работает под другими вроде как работает но возвращает 1 и тоже считаное в первый раз. вин 2003 сервак
//******************************************* // функция стрПолучитьСтраницу(стрИсточник, олеАДО, олеХМЛ, олеШелл) // // Параметры: // стрИсточник - строка содержащая URL страницы // олеАДО - OLE объект ADODDB Stream // олеХМЛ - OLE объект XMLHttpReques // олеШелл - OLE объект для управления скриптами // // Возвращаемое значение: // Многострочная строка содержащая исходный код страницы // в кондировке win1251 // // Описание: // Функция считывает из интернета страницу и декодирует ее из // формата UTF-8 в win1251 // функция стрПолучитьСтраницу(стрИсточник, олеАДО, олеХМЛ, олеШелл) Ответ = ""; // сгенирим имя файла для временного хранения содержимого страницы стрИмяФайла = каталогИБ() + "1.txt"; // отправим запрос для обработки серверу олеХМЛ.Open("GET", стрИсточник, 0); попытка // пробуем получить страничку олеХМЛ.Send(); исключение // не взлетело... либо нет тырнета, либо УРЛ страницы не верен стрТекстОшибки = "Не удалось получить информацию от запрашиваемого узла" + разделительстрок; стрТекстОшибки = стрТекстОшибки + "Либо нет доступа в интерент, либо данный ресурс не доступен!"; предупреждение(стрТекстОшибки); возврат Ответ; конецпопытки; // зададим тип и режим потока олеАДО.Mode = 3; олеАДО.Type = 1; // откроем его олеАДО.Open(); // с помощью скрипта запишем в поток ADO данные из // объекта XMLHttpRequest // то есть содержимое страницы олеШелл.Eval("oleADO.Write(oleXML.ResponseBody)"); // запишем данные во временный файл олеАДО.SaveToFile(стрИмяФайла, 2); // закроем данный поток олеАДО.Close(); // для ускорения парсера занесем весь файл в строковую // переменую с разделителем строк // для этого инициализуруем поток установкой // соотвествующим режимом и типом олеАДО.Mode= 3; олеАДО.Type = 2; // так как страница в UTF-8 олеАДО.CharSet="UTF-8"; // откроем поток олеАДО.Open(); // загрузим содержимое нашего файла в поток олеАДО.LoadFromFile(стрИмяФайла); // обнулим временную строковую переменную // в цикле получим из потока все строки пока олеАДО.EOS() = 0 цикл // и запишем их во временную переменую, добавив разделитель строк Ответ = Ответ + олеАДО.ReadText(-2) + разделительстрок; конеццикла; // закроем данный поток олеАДО.Close(); // удалим временный файл фс.УдалитьФайл(стрИмяФайла); // вернем результат возврат Ответ; конецфункции //---------------------------------------------------------------------------- Процедура Сформировать() олеХМЛ = создатьобъект("Microsoft.XMLHTTP"); // создадим \"поток\" через ADODDB для работы с данными олеАДО = создатьобъект("ADODB.Stream\"); // создадим объект для управления скриптами олеШелл = создатьобъект("MSScriptControl.ScriptControl"); // установим язык сценариев олеШелл.Language = "vbscript"; // добавим созданные объекты олеШелл.AddObject("oleADO", олеАДО); олеШелл.AddObject("oleXML", олеХМЛ); // сперва дернем страницу с меню на русском языке стрУРЛа = "http://192.168.1.177"; стрТемп = стрПолучитьСтраницу(стрУРЛа, олеАДО, олеХМЛ, олеШелл); сообщить(стрТемп); //******************************************* КонецПроцедуры |
|||
1
uno-group
16.08.16
✎
11:09
|
заметил такую закономерность если открыть ИЕ эту страницу и обновлять в 1с начинают поступать новые данные
|
|||
2
Serginio1
16.08.16
✎
11:46
|
Лучше использовать более продвинутые инструменты
v8: v8: Использование сборок .NET в 1С 7.x и 8.x Использование классов .Net в 1С для новичков .Net в 1С. Парсинг сайтов, multipart/form-data, gzip итд Для семерки есть нюансы, которые описаны в примерах для семерки |
|||
3
uno-group
16.08.16
✎
12:03
|
ЗагрузитьВнешнююКомпоненту(КаталогИБ()+"ExtForms\v7plus.dll");
Соединение= СоздатьОбъект("AddIn.V7HttpReader"); Соединение.ПолучитьКакФайл(стрУРЛа,"D:\price.txt"); попробывал через в7+ теже яйца только в профиль пока в експлоере страницу необновишь даные неменяются |
|||
4
Юрий Лазаренко
16.08.16
✎
12:04
|
(3) Ну так он из из кэша наверно тащит?
|
|||
5
uno-group
16.08.16
✎
13:36
|
вроде кеш оключил.
(2) не осилил на странице отображается 6 цифр через; мне надо получит эти цифры. чет как то все сильно мудрено |
|||
6
Юрий Лазаренко
16.08.16
✎
13:37
|
(5) Ну если вы все равно OLE используете, так подключайтесь через OLE сразу к IE, грузите страницу в нем и читайте ее исходники.
|
|||
7
Serginio1
16.08.16
✎
14:14
|
(5) Прошу прощения. Не заметил вин 2003 сервак. Там есть компонента под .Net 2.0. Но раз не осилил значит не осилил.
На .Net 4 врап=новый COMОбъект("NetObjectToIDispatch45"); врап.УстЭтоСемерка(); HttpClient=Врап.ПолучитьТипИзСборки("System.Net.Http.HttpClient","System.Net.Http.dll"); Клиент=Врап.СоздатьОбъект(HttpClient); ДанныеРесурса=Клиент.GetStringAsync(стрИсточник).Result; Сообщить(Врап.ВСтроку(ДанныеРесурса)); |
|||
8
uno-group
16.08.16
✎
14:18
|
(6) примет кода можно.
(7) неудачная попытка создать объет NetObjectToIDispatch45 |
|||
9
lubitelxml
16.08.16
✎
14:21
|
(8) обнови фреймворк до 4.5 версии
|
|||
10
Serginio1
16.08.16
✎
14:24
|
Конечно. Его нужно скачать и установить. Там в шапке ссылка Использование классов .Net в 1С для новичков
Но у тебя 2003 сервак там нужно устанавливать NetObjetToIDispatch и работать с WebRequest https://msdn.microsoft.com/ru-ru/library/system.net.webrequest(v=vs.110).aspx |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |