|
Распаковка текста сжатого gzip | ☑ | ||
---|---|---|---|---|
0
jamesgold
27.10.20
✎
16:47
|
Добрый день, прошу помочь!
С сервера получаю файл сжатого методом GZIP XMLHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1"); XMLHttp.Option(2,"UTF-8"); XMLHttp.Option(4, 13056); XMLHttp.Open("GET", АдресФайлаВИнтернете, Ложь); XMLHttp.send(); Отв = XMLHttp.responseText; Скрин ответа: http://prntscr.com/v7xpkf Как получить читаемый текст? |
|||
1
H A D G E H O G s
27.10.20
✎
16:53
|
Можно средствами платформы через ComSafeArray и вот это все, но есть уже готовое тут
https://1c-programmer-blog.ru/programmirovanie/rabota-s-setyu-v-1s-obekty-winhttprequest-i-stream-ado.html |
|||
2
polosov
27.10.20
✎
16:53
|
(0) Это Zip без заголовка.
Интегрируй в свое решение модуль https://github.com/vbondarevsky/Connector Там все реализовано. |
|||
3
jamesgold
27.10.20
✎
17:01
|
(1) Пробовал, не решило проблему
|
|||
4
jamesgold
27.10.20
✎
17:03
|
(2) Платформа не подходит.
|
|||
5
jamesgold
27.10.20
✎
17:10
|
(1) WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1"); //WinHttpRequest
WinHttp.Open("GET", АдресФайлаВИнтернете, Ложь); WinHttp.Send(); Если WinHttp.Status = 200 Тогда Stream = Новый COMОбъект("ADODB.Stream"); Stream.Type = 1; Stream.Mode = 3; Stream.Open(); Stream.Write(WinHttp.ResponseBody); Stream.SaveToFile(ИмяПромежуточногоФайла, 2); Stream.Close(); Stream = Неопределено; Иначе Сообщить("HTTP " + WinHttp.Status + " " + WinHttp.StatusText); Возврат; КонецЕсли; В ИмяПромежуточногоФайла вот такое содержимое: http://prntscr.com/v7ycq1 |
|||
6
polosov
27.10.20
✎
17:28
|
(5) Если совсем старая, то используй 7zip. Он умеет распаковывать такое.
|
|||
7
jamesgold
27.10.20
✎
18:08
|
(6) Есть пример такой распаковки?
|
|||
8
jamesgold
27.10.20
✎
18:47
|
ап
|
|||
9
МихаилМ
27.10.20
✎
19:11
|
нет метода gzip.есть утилита gzip ,которая сжимает по алгоритму deflate, который стандартен для 1с
|
|||
10
jamesgold
27.10.20
✎
19:46
|
(9) Есть пример декомпрессии?
|
|||
11
Armando
28.10.20
✎
00:45
|
Использовал эту ВК http://catalog.mista.ru/public/487987/ Работает
|
|||
13
Кулибин
28.10.20
✎
02:49
|
Запустить Приложение(7z.exe e путь -aoa -o путь2, путь3, истина) так работает, если по памяти в параметрах не ошибся ;-)
|
|||
14
jamesgold
28.10.20
✎
10:28
|
(13) Не работает распаковка 7z
http://prntscr.com/v8fzk2 |
|||
15
Кулибин
28.10.20
✎
10:40
|
(14) Он винраром открывается? Извлечь получается? Если да, то формат командной строки только. Попробуй перед распаковкой файл переименовать - очисти расширение. Всё должно работать.
|
|||
16
BaHgaJI
28.10.20
✎
10:42
|
||||
17
arsik
гуру
28.10.20
✎
10:57
|
(0) Платформа то какая? 77?
|
|||
18
mistеr
28.10.20
✎
11:04
|
(2) Я не понял, она за собой Питон тащит?
|
|||
19
arsik
гуру
28.10.20
✎
11:06
|
А если это файл через браузер типа хрома скачать? Что в итоге будет?
|
|||
20
polosov
28.10.20
✎
11:15
|
(18) Кто "она"?
|
|||
21
Кулибин
28.10.20
✎
11:15
|
(13) ну, тогда так попробуй что ли ;-) ЗапуститьПриложение(""""+"C:\Program Files\WinRAR\WinRAR.exe"+""""+" x "+Путь+" *.* "+Сред(Путь,1,СтрДлина(Путь)-4)+"\"+"""");
|
|||
22
jamesgold
28.10.20
✎
11:19
|
(17) 1С:Предприятие 8.2 (8.2.19.83)
|
|||
23
jamesgold
28.10.20
✎
11:21
|
(15) Действительно, если сменить файлу расширение на zip и распаковать его, файл становится читаемым
|
|||
24
mistеr
28.10.20
✎
11:21
|
(20) Библиотека по ссылке.
|
|||
25
jamesgold
28.10.20
✎
11:22
|
(19) файл сразу в читаемом виде
|
|||
26
polosov
28.10.20
✎
11:25
|
(24) Это просто код на 1С. Можно запихнуть его в общий модуль и пользоваться.
|
|||
27
arsik
гуру
28.10.20
✎
11:32
|
(25) (22) А нафига через WinHttpRequest? В 1С есть встроенные методы работы с HTTP. Они тебе сразу норм вернут.
|
|||
28
mistеr
28.10.20
✎
11:34
|
(26) Спасибо, взял на заметку.
|
|||
29
arsik
гуру
28.10.20
✎
11:38
|
+ (27) Еще можно в заголовке запроса указать
XMLHttp.SetRequestHeader("Accept-Encoding", "identity");
Тогда сервер будет отдавать чистые данные, без архивирования |
|||
30
polosov
28.10.20
✎
11:39
|
(28) Он очень удобный. Все интеграции пишу с его использованием. С минимальными изменениями под свои нужды.
|
|||
31
jamesgold
28.10.20
✎
11:45
|
(21) Распаковка прекрасна работает
|
|||
32
jamesgold
28.10.20
✎
13:24
|
Всем спасибо, за ответы! Нормальное решение доступно только за стармани, Кулибин подсказал как обойтись с помощью костыля. На будущее после обновления платформы буду использовать http://catalog.mista.ru/public/487987/
|
|||
33
arsik
гуру
28.10.20
✎
13:37
|
(32) Да уж. Нихера то ты не понял.
|
|||
34
jamesgold
28.10.20
✎
14:07
|
(33) не работает
http://prntscr.com/v8kwae |
|||
35
jamesgold
28.10.20
✎
14:09
|
(27) Можно пример?
|
|||
36
arsik
гуру
28.10.20
✎
14:19
|
(34) Значит сервер не обрабатывает этот заголовок и шлет тебе в gzip
(35) https://bit.ly/3muYzZ7 Стандартными средствами 1С тебе не нужно будет распаковывать из gzip. Платформа сама поймет что пришли сжатые данные. Распакует их и вернет тебе исходный файл. |
|||
37
polosov
28.10.20
✎
14:47
|
(36) "Стандартными средствами 1С тебе не нужно будет распаковывать из gzip"
Фантазии. |
|||
38
Кулибин
28.10.20
✎
14:54
|
(37) ;-)
|
|||
39
arsik
гуру
28.10.20
✎
15:02
|
(37) Можем проверить.
|
|||
40
arsik
гуру
28.10.20
✎
16:04
|
(37) Сорян. Реально. Платформа это не обрабатывает.
|
|||
41
arsik
гуру
28.10.20
✎
16:16
|
Можно еще попробовать в запросе передать
XMLHttp.SetRequestHeader("Accept-Encoding", "deflate"); |
|||
42
Кулибин
29.10.20
✎
04:34
|
(32) почему костыль? разберись, почему 7зэт у тебя не распаковывает, или всё же дело было в расширении? засунь его двоичкой в макет и будет работать вечно ;-) заодно попробуй на лету определить тип файла при чтении /не архив/архив/какой архив/ перед обработкой...
|
|||
43
Armando
29.10.20
✎
10:03
|
(32) Зачем ждать обновления? Оно и на 8.2 работает. http://forum.infostart.ru/forum28/topic148149/message2451452/#message2451452
|
|||
44
Serginio1
29.10.20
✎
17:02
|
||||
45
polosov
29.10.20
✎
17:12
|
(44) Статья, как пример принципа ХХВП.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |