|
v7: Поделитесь опытом получения файла по https | ☑ | ||
---|---|---|---|---|
0
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) - пишет Тип переменой не поддерживается |
|||
1
belchOnokZ
26.03.19
✎
11:42
|
Недавно была проблема, решила сохранить рецепт http://woman365.ru/recipes/kak-solit-volnushki/ Попробовала получилось.
|
|||
2
Garykom
гуру
26.03.19
✎
11:49
|
curl или ВК не проще?
|
|||
3
Sam1C
26.03.19
✎
11:49
|
(2) Не знаю проще или нет, а есть пример?
|
|||
4
Sam1C
26.03.19
✎
11:51
|
(1) Это что за спам?
|
|||
5
belchOnokZ
26.03.19
✎
11:52
|
Почему спам?
|
|||
6
Mikeware
26.03.19
✎
11:54
|
(5) а что тогда?
|
|||
7
Djelf
26.03.19
✎
12:14
|
(0) ADOStream.Write(XMLHTTP.responseBody);
Ты хотел записать пустое значение потока в бинарном виде в ответ XMLHTTP? Странно что не получилось. Используй Read или ReadText. |
|||
8
Ёпрст
26.03.19
✎
12:16
|
(5) ого, боты еще и на вопросы научились отвечать правильно..!
|
|||
9
Sam1C
26.03.19
✎
12:33
|
(7) Тут неверно скинул на форум сори, стоит Read в рабоче коде, но проблема именно в XMLHTTP.responseBody, не работает даже если так "а = XMLHTTP.responseBody" Тип переменой не поддерживается
|
|||
10
Djelf
26.03.19
✎
12:51
|
А XMLHTTP.status после получения данных у тебя какой? Должно быть 200.
|
|||
11
Sam1C
26.03.19
✎
13:41
|
(10) да 200
|
|||
12
Djelf
26.03.19
✎
14:00
|
(11) А... не responseBody, а ADOStream.ReadText(XMLHTTP.responseText)
А с responseBody заворачивай все в MSScriptControl.ScriptControl, иначе не получится. |
|||
13
trad
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"); КонецЕсли; КонецПроцедуры |
|||
14
Sam1C
26.03.19
✎
14:14
|
(12) (13) Спасибо завернул все MSScriptControl.ScriptControl, все взлетело
|
|||
15
Sam1C
26.03.19
✎
14:15
|
(12) Кстати надо использовать метод Write, а не Read это к (7), в (0) правильный код
|
|||
16
Sam1C
26.03.19
✎
14:17
|
trad, а чем лучше использовать Msxml2.ServerXMLHTTP, вместо Microsoft.XMLHTTP или просто дело вкуса?
|
|||
17
trad
26.03.19
✎
14:40
|
(16) Сложно ответить, больше дело привычки наверно.
Просто давно где-то в доках MS читал что ServerXMLHTTP в отличие от XMLHTTP построен на более современных библиотеках, вроде как надежнее и безопаснее. Оттуда и повелось |
|||
18
Sam1C
26.03.19
✎
15:48
|
(17) Понял, спс
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |