Имя: Пароль:
1C
1С v8
Как сменить кодировку в COMОбъект("Microsoft.XMLHTTP")
0 oleg_prg
 
15.04.14
18:38
Добрый день, уважаемые форумчане. Есть функция которая сохраняет на диск  HTML страницу. Но есть проблема, русский шрифт сохраняется в непонятной кодировке, подскажите пожалуйста как решить?

Функция вызывается например вот так WebToFile("http://mail.ru";, "D:\tester.html")

Далее сама функция

Функция WebToFile(Адрес, Файл) Экспорт
        
    //Отправка стандартного запроса
    Попытка
    // создадим объект XMLHttpRequest
        олеХМЛ = новый COMОбъект("Microsoft.XMLHTTP");
    Исключение
        Сообщить("Ошибка создания Microsoft.XMLHTTP");
        Возврат null;
    КонецПопытки;
    // иницируем его типом запроса и нужным нам URL
    олеХМЛ.Open("GET", Адрес, 0);
    //Сообщить(Адрес);
    Попытка
    // отправим запрос для обработки серверу
        олеХМЛ.Send();
    Исключение
        Сообщить("Ошибка доступа!!! SEND объекта Microsoft.XMLHTTP");
        Возврат null;
    КонецПопытки;
           
    Попытка
    // создадим "поток" через ADODDB для работы с данными
        олеАДО = новый COMОбъект("ADODB.Stream");
    Исключение
        Сообщить("Ошибка создания ADODB.Stream");
        Возврат null;
    КонецПопытки;
    // зададим тип и режим потока
    олеАДО.Mode = 3;
    олеАДО.Type = 1;
    // откроем его
    олеАДО.Open();
    
    Попытка
        // создадим объект для управления скриптами
        олеШелл = новый COMОбъект("MSScriptControl.ScriptControl");
    Исключение
        Сообщить("Ошибка создания MSScriptControl.ScriptControl");
        Возврат null;
    КонецПопытки;
    // установим язык сценариев
    олеШелл.Language = "vbscript";
    // добавим созданные объекты
    олеШелл.AddObject("oleADO", олеАДО);
    олеШелл.AddObject("oleXML", олеХМЛ);
    // с помощью скрипта запишем в поток ADO данные из
    // объекта XMLHttpRequest
    // то есть содержимое страницы
    олеШелл.Eval("oleADO.Write(oleXML.ResponseBody)");
    // запишем данные во временный файл
    //Сообщить(">>>"+СокрЛП(Константы.ПутьКОтчетамPHP.Получить())+ИмяПапки+"\"+ИмяФайла);
    олеАДО.SaveToFile(Файл, 2);
    //Сообщить(СокрЛП(Константы.ПутьКОтчетамPHP.Получить())+ИмяПапки+"\"+ИмяФайла);
    // закроем данный поток
    олеАДО.Close();
    
КонецФункции

Заранее спасибо!
1 Зойч
 
15.04.14
19:32
в 1с и штатные методы для этого есть
2 oleg_prg
 
15.04.14
19:46
Решил
Стер функцию и написал 2 строчки ))))

Соединение = Новый HTTPСоединение("geocode-maps.yandex.ru/1.x/?geocode=30.210765 55.163579&kind=district",,,,,Ложь);
Соединение.Получить("","D:\1.txt");
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший