Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Поделитесь опытом получения файла по https

v7: Поделитесь опытом получения файла по https
Я
   Sam1C
 
26.03.19 - 11:22
Какие есть способы получить файл и сохранить на диске по веб ссылке? Пробую:
    XMLHTTP = CreateObject("Microsoft.XMLHTTP"); //CreateObject("WinHttp.WinHttpRequest.5.1");
    XMLHTTP.Open("GET",url,0);  
    Попытка
        XMLHTTP.Send();
    Исключение
        Сообщить("Ошибка отправки (Send) возможно нет подключения к интернету:" + ОписаниеОшибки(),"!");
        Возврат;
    КонецПопытки;
    ADOStream = CreateObject("ADODB.Stream");
    ADOStream.Type = 1;
    ADOStream.Open();
    ADOStream.Write(XMLHTTP.responseBody);    
    ADOStream.SaveToFile (Путь + "1.dat", 2);

На строке ADOStream.Write(XMLHTTP.responseBody) -  пишет Тип переменой не поддерживается
 
 
   belchOnokZ
 
1 - 26.03.19 - 11:42
Недавно была проблема, решила сохранить рецепт http://woman365.ru/recipes/kak-solit-volnushki/  Попробовала получилось.
   Garykom
 
2 - 26.03.19 - 11:49
curl или ВК не проще?
   Sam1C
 
3 - 26.03.19 - 11:49
(2) Не знаю проще или нет, а есть пример?
   Sam1C
 
4 - 26.03.19 - 11:51
(1) Это что за спам?
   belchOnokZ
 
5 - 26.03.19 - 11:52
Почему спам?
   Mikeware
 
6 - 26.03.19 - 11:54
(5) а что тогда?
   Djelf
 
7 - 26.03.19 - 12:14
(0) ADOStream.Write(XMLHTTP.responseBody);
Ты хотел записать пустое значение потока в бинарном виде в ответ XMLHTTP? Странно что не получилось.
Используй Read или ReadText.
   Ёпрст
 
8 - 26.03.19 - 12:16
(5) ого, боты еще и на вопросы научились отвечать правильно..!
   Sam1C
 
9 - 26.03.19 - 12:33
(7) Тут неверно скинул на форум сори, стоит Read в рабоче коде, но проблема именно в XMLHTTP.responseBody, не работает даже если так "а = XMLHTTP.responseBody" Тип переменой не поддерживается
   Djelf
 
10 - 26.03.19 - 12:51
А XMLHTTP.status после получения данных у тебя какой? Должно быть 200.
 
 Рекламное место пустует
   Sam1C
 
11 - 26.03.19 - 13:41
(10) да 200
   Djelf
 
12 - 26.03.19 - 14:00
(11) А... не responseBody, а ADOStream.ReadText(XMLHTTP.responseText)
А с responseBody заворачивай все в MSScriptControl.ScriptControl, иначе не получится.
   trad
 
13 - 26.03.19 - 14:12
(12) +

//*******************************************
Процедура СохранитьВФайл(http, ИмяФайла)
    
    Скрипт = СоздатьОбъект("MSScriptControl.ScriptControl");
    Скрипт.language = "vbscript";
    
    stream = CreateObject("ADODB.Stream");
    stream.Mode = 3;
    stream.Type = 1;
    stream.Open();
    
    Скрипт.AddObject("stream",stream);
    Скрипт.AddObject("http",http);
    Скрипт.Eval("stream.Write(http.responseBody)");
    
    stream.SaveToFile(ИмяФайла, 2);
    
КонецПроцедуры


//*******************************************
Процедура Сформировать()

    http = СоздатьОбъект("Msxml2.ServerXMLHTTP");
    http.open("GET", "http://www.toool.ru/img_resized/850_640/136/136397/00000030236_430045106050.jpg";, 0);
    http.send();
    Если http.status = 200 Тогда
        СохранитьВФайл(http, "C:\1.jpg");
    КонецЕсли;
    
КонецПроцедуры
   Sam1C
 
14 - 26.03.19 - 14:14
(12) (13) Спасибо  завернул все MSScriptControl.ScriptControl, все взлетело
   Sam1C
 
15 - 26.03.19 - 14:15
(12) Кстати надо использовать метод Write, а не Read это к (7), в (0) правильный код
   Sam1C
 
16 - 26.03.19 - 14:17
trad, а чем лучше использовать Msxml2.ServerXMLHTTP, вместо Microsoft.XMLHTTP или просто дело вкуса?
   trad
 
17 - 26.03.19 - 14:40
(16) Сложно ответить, больше дело привычки наверно.
Просто давно где-то в доках MS читал что ServerXMLHTTP в отличие от XMLHTTP построен на более современных библиотеках, вроде как надежнее и безопаснее.
Оттуда и повелось
   Sam1C
 
18 - 26.03.19 - 15:48
(17) Понял, спс

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует