|
Распаковка gzip строки | ☑ | ||
---|---|---|---|---|
0
Crush
18.02.16
✎
12:11
|
От сервера получаю строку, запакованную gzip. Как распаковать?. Вместе со строкой есть еще и stream в виде ComSafeArray, где каждый элемент - это аскии-код символа той же самой строки.
Пробовал через base64 в файл записать, но всё равно фигня какая то получается. Поиск только php-функции для распаковки предлагает. |
|||
1
Crush
18.02.16
✎
12:13
|
1С:Предприятие 8.3 (8.3.7.1873)
|
|||
2
sash-ml
18.02.16
✎
12:18
|
запиши в текстовый файл с расширением zip. открой проводником. при открытии такого архива в нем будет один файл без расширения совпадающий с именем архива.
Если ок. то дальше ЧтениеZipФайла |
|||
3
Crush
18.02.16
✎
12:23
|
(2) Неполучится. У файла зип-архива есть заголовки и прочее. А уменя только упакованная строка.
На php это делается так: string gzencode ( string $data [, int $level = -1 [, int $encoding_mode = FORCE_GZIP ]] ) В браузерах встроенные энкодеры. В cURL-е тоже есть распаковщик. А в 1С я хз как реализовать. Алгоритм распаковки самому писать совсем не хочется. |
|||
4
sash-ml
18.02.16
✎
12:25
|
(3) получится, если нет заголовков, то там будет один файл без расширения совпадающий с именем архива
|
|||
5
Crush
18.02.16
✎
12:27
|
(4) Блииин!!! Ты прав!!!! Спасибо!!!
Вчера пробовал, не взлетело. Сейчас попробовал - получилось. Но, всё же вопрос остаётся. Т.к. распаковать как то можно без использования файловой системы. |
|||
6
sash-ml
18.02.16
✎
12:41
|
варианты еще такие, вывести на форму поле ХТМЛ документа и попробовать там через JS
Найти СОМобъект который работает с гЗИП например gzip.DeflateStringENC gzip.InflateStringENC |
|||
7
Crush
18.02.16
✎
12:50
|
Форма - не вариант. Распаковка на сервере в регламентном задании будет.
Я пока Compression API ковыряю. |
|||
8
sash-ml
18.02.16
✎
12:55
|
как строку получаешь?
|
|||
9
Crush
18.02.16
✎
14:01
|
(8)
WinHttp.ResponseText //WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1") |
|||
10
sash-ml
18.02.16
✎
14:13
|
(9) а если в браузере открыть, строка тоже запакована?
|
|||
11
Crush
18.02.16
✎
14:28
|
(10) Да
|
|||
12
Crush
18.02.16
✎
16:24
|
Косякус. 1С-овский ЧтениеZipФайла не может работать с этим архивом, а far и 7-zip могут.
|
|||
13
sash-ml
18.02.16
✎
16:36
|
(12) печаль, тогда нужно что-то вроде ЗапуститьПриложение("unzip myfile",каталог), но это уже костыль на костыле.
|
|||
14
Лефмихалыч
18.02.16
✎
16:40
|
(12) а он аргументирует чем-то, когда не может?
|
|||
15
Serginio1
18.02.16
✎
16:50
|
||||
16
Serginio1
18.02.16
✎
16:56
|
Тебе подойдет GetStreamAsync
https://msdn.microsoft.com/ru-ru/library/hh551738(v=vs.118).aspx |
|||
17
oleg_km
18.02.16
✎
17:52
|
(15) Да, один из моментов использования .НЕТ.
Вот код на 1С: Процедура GZIPУпаковать(вхФайл, исхФайл) Экспорт УдалитьФайлы(исхФайл); Типы = ПолучитьТипыДляФайлов(); обФайлИсходный = СоздатьОбъект(Типы.Файл, вхФайл, Типы.Режим.Open, Типы.Доступ.Read, Типы.Разделение.ReadWrite); обФайлАрхив = СоздатьОбъект(Типы.Файл, исхФайл, Типы.Режим.CreateNew, Типы.Доступ.Write); обПотокКомпр = СоздатьОбъект(ПолучитьТип("System.IO.Compression.GZipStream", "System"), обФайлАрхив, ПолучитьТип("System.IO.Compression.CompressionMode", "System").Compress); обФайлИсходный.CopyTo(обПотокКомпр); обПотокКомпр.Close(); обФайлАрхив.Close(); обФайлИсходный.Close(); КонецПроцедуры Процедура GZIPРаспаковать(вхФайл, исхФайл) Экспорт УдалитьФайлы(исхФайл); Типы = ПолучитьТипыДляФайлов(); обФайлАрхив = СоздатьОбъект(Типы.Файл, вхФайл, Типы.Режим.Open, Типы.Доступ.Read, Типы.Разделение.ReadWrite); обФайлНовый = СоздатьОбъект(Типы.Файл, исхФайл, Типы.Режим.CreateNew, Типы.Доступ.Write); обПотокКомпр = СоздатьОбъект(ПолучитьТип("System.IO.Compression.GZipStream", "System"), обФайлАрхив, ПолучитьТип("System.IO.Compression.CompressionMode", "System").Decompress); обПотокКомпр.CopyTo(обФайлНовый); обПотокКомпр.Close(); обФайлАрхив.Close(); обФайлНовый.Close(); КонецПроцедуры |
|||
18
Crush
18.02.16
✎
20:13
|
(14) Ругается на неверный формат файла
(13) Ага. Причём только через ЗапуститьПриложение и получается. А через Shell нивкакую WshShell = Новый COMObject("WScript.Shell"); Сообщить(WshShell.Run("""C:\Program Files\7-Zip\7z.exe"" x D:\tmep\gzip\1 -so>d:\3",0,1)); |
|||
19
Serginio1
19.02.16
✎
10:15
|
(18) Можешь скинуть ссылку на ресурс? Посмотрю и может другим польза будет. И пример то, чего вытаскиваешь.
|
|||
20
kirillkr
19.02.16
✎
17:58
|
(17), Олег, а что из себя представляют функции
ПолучитьТипыДляФайлов, СоздатьОбъект и ПолучитьТип |
|||
21
Crush
19.02.16
✎
20:27
|
(19) Какой ресурс? Пример - это строка сжатая gzip.
Нашел пока убогий вариант средствами WScript.Shell 1. Создаю bat-ник со строкой распаковки "C:\Program Files\7-Zip\7z.exe" x d:\1.zip -so>d:\1.txt 2. Запускаю батник WshShell.Run("d:\1.bat",0,1); 7zip в этом случае не ругается и трабатывает как надо. Распакованный текст получаю. Окошко консоли не появляется. Но, блин, жуть как криво получается:( |
|||
22
Serginio1
19.02.16
✎
20:31
|
(21) Любой ресурс который возвращает сжатую строку
(20) Смотри Использование классов .Net в 1С для новичков http://catalog.mista.ru/public/448668/ Это обертка над методами NetObjectToIDispatch45 врап=новый COMОбъект("NetObjectToIDispatch45"); |
|||
23
miliko
19.02.16
✎
20:33
|
(0)
понятно ... сколько будет 2*2, без гугла не обойтись ) |
|||
24
Crush
19.02.16
✎
21:58
|
(22) Нашел клёвую штуку comобъект("Chilkat.Gzip"), но она триальная на 30 дней, а дальше 149$.
Ссылку на конкретный ресурс не могу дать, а других не знаю:( system.io.compression.gzipstream - эта штука - это то, что надо, но с обёрткой у меня пока туго. Видимо придётся завтра курить эту тему. |
|||
25
Crush
19.02.16
✎
21:59
|
+(24) http://www.chilkatsoft.com/refdoc/xGzipRef.html
Оставлю это здесь, мож кому интересно будет. Но дорого! |
|||
26
Serginio1
19.02.16
✎
22:15
|
(24) А чем тебе 17 не подходит? Причем бесплатно.
|
|||
27
Serginio1
19.02.16
✎
22:17
|
(24) Еще раз дай ресурс я протестирую и выложу с использованием HTTPClient итд.
Там 3-5 строк кода. |
|||
28
Garykom
гуру
19.02.16
✎
22:45
|
еще можно взять код на C из http://www.gzip.org/#sources
и наваять на 1С свой распаковщик |
|||
29
Serginio1
20.02.16
✎
08:42
|
Кстати можно автоматически разархивировать
http://stackoverflow.com/questions/20990601/decompressing-gzip-stream-from-httpclient-response HttpClientHandler handler = new HttpClientHandler() { AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate }; using (var client = new HttpClient(handler)) { // your code } |
|||
30
Serginio1
20.02.16
✎
10:19
|
По русски это выглядит так
врап=новый COMОбъект("NetObjectToIDispatch45"); uriSources = "https://msdn.microsoft.com/en-us/library/system.net.decompressionmethods(v=vs.110).aspx"; HttpClient=Врап.ПолучитьТипИзСборки("System.Net.Http.HttpClient","System.Net.Http.dll"); handler = врап.СоздатьОбъект("System.Net.Http.HttpClientHandler"); handler.AutomaticDecompression=Врап.ПолучитьТип("System.Net.DecompressionMethods").GZip ; Клиент=Врап.СоздатьОбъект(HttpClient,handler); Стр=Клиент.GetStringAsync(uriSources).Result; //Клиент.Dispose(); // Правильнее ниже если видишь using Врап.ПолучитьИнтерфейс(Клиент,"IDisposable").Dispose(); Сообщить(СтрДлина(Стр)); |
|||
31
Serginio1
20.02.16
✎
10:28
|
uriSources подставь свой.
По поводу OR то напишу. Но можно использовать варианты Как здесь http://catalog.mista.ru/public/417830/ или Динамическая компиляция для использования .Net событий в 1С Напишу во врапере OR а то оченьчасто встречается |
|||
32
Serginio1
20.02.16
✎
14:09
|
Добавил в новой сборке метод OR http://files.rsdn.ru/19608/%d0%a4%d0%b0%d0%b9%d0%bb%d1%8bNetObjectToIDispatch.zip
теперь можно DecompressionMethods= Врап.ПолучитьТип("System.Net.DecompressionMethods"); handler.AutomaticDecompression=Врап.OR(DecompressionMethods.GZip,DecompressionMethods.Deflate) ; или NotifyFilters=врап.ПолучитьТип("System.IO.NotifyFilters"); рез=Врап.OR(NotifyFilters.LastAccess,NotifyFilters.LastWrite,NotifyFilters.FileName,NotifyFilters.DirectoryName); |
|||
33
Garykom
гуру
20.02.16
✎
14:20
|
(32) крут, теперь "составные перечисления" можно
|
|||
34
Serginio1
20.02.16
✎
14:25
|
(33) А это еще чё такое?
|
|||
35
Serginio1
20.02.16
✎
14:26
|
||||
36
Garykom
гуру
20.02.16
✎
14:29
|
(34) в смысле сделать когда https://msdn.microsoft.com/ru-ru/library/system.drawing.fontstyle(v=vs.110).aspx
шрифт одновременно жирный, курсивный и подчеркнутый |
|||
37
Serginio1
20.02.16
✎
14:36
|
(36) У него FlagsAttribute https://msdn.microsoft.com/ru-ru/library/system.flagsattribute(v=vs.110).aspx
Можешь применять |
|||
38
Serginio1
20.02.16
✎
14:38
|
||||
39
Crush
20.02.16
✎
17:12
|
(30) Что то не понимаю как переделать код под System.IO.Compression.GZipStream
Делаю так: GZipStream=Врап.ПолучитьТипИзСборки("System.IO.Compression.GZipStream","System.dll"); И у меня пустой Ком-объект на выходе |
|||
40
Crush
20.02.16
✎
17:14
|
В мсдн говорят, что сборка в system.dll https://msdn.microsoft.com/ru-ru/library/system.io.compression.gzipstream(v=vs.110).aspx?cs-save-lang=1&cs-lang=cpp#code-snippet-1
Хотя есть отдельная библиотека System.IO.Compression.dll, но с ней тоже пустой ком-объект. |
|||
41
Garykom
гуру
20.02.16
✎
17:30
|
(39) Это не тип а класс
юзай "Врап.СоздатьОбъект" |
|||
42
Garykom
гуру
20.02.16
✎
17:32
|
(41)+ если в коде на C# стоит "new" то класс это
|
|||
43
Crush
20.02.16
✎
17:42
|
(41)
А как правильно параметр передать? Compression=Врап.СоздатьОбъект("System.IO.Compression.GZipStream[ГзипСтрока]"); по причине: Произошла исключительная ситуация (NetObjetToIDispatch45): неверный тип System.IO.Compression.GZipStream[ГзипСтрока] Compression=Врап.СоздатьОбъект("System.IO.Compression.GZipStream"); по причине: Произошла исключительная ситуация (mscorlib): Конструктор для типа "System.IO.Compression.GZipStream" не найден. |
|||
44
Garykom
гуру
20.02.16
✎
17:47
|
(43) через "," уже параметры передаешь
https://msdn.microsoft.com/ru-ru/library/as1ff51s(v=vs.110).aspx поток нужно передать и "тип" CompressionMode.Decompress |
|||
45
Garykom
гуру
20.02.16
✎
17:48
|
(44)+ лучше попроси Serginio1
|
|||
46
Crush
20.02.16
✎
18:04
|
:(
хз2 = врап.СоздатьОбъект("GZipStream(ГзипСтрока, CompressionModeDecompress)"); по причине: Произошла исключительная ситуация (mscorlib): Невозможно загрузить файл или сборку "CompressionModeDecompress)" или один из зависимых от них компонентов. Неправильный указатель (Исключение из HRESULT: 0x80004003 (E_POINTER)) CompressionMode =Врап.ПолучитьТип("System.IO.Compression.CompressionMode"); CompressionModeDecompress =CompressionMode.Decompress; хз2 = врап.СоздатьОбъект("GZipStream(ГзипСтрока, CompressionModeDecompress)"); |
|||
47
Crush
20.02.16
✎
18:06
|
И так не прёт:( Какой правильный синтаксис?
хз2 = врап.СоздатьОбъект("System.IO.Compression.GZipStream",ГзипСтрока, CompressionModeDecompress); |
|||
48
Garykom
гуру
20.02.16
✎
18:15
|
(47) правильно, только "ГзипСтрока" - нужно на основе строки создать поток(stream) и "CompressionModeDecompress" - вот это ПолучитьТип
|
|||
49
Garykom
гуру
20.02.16
✎
18:16
|
(48)+ короче без знаний хотя бы начальных C# это унреал ))
|
|||
50
Crush
20.02.16
✎
18:46
|
хз2 = врап.СоздатьОбъект("System.IO.Compression.GZipStream(ГзипПоток,CompressionMode.Decompress)");
по причине: Произошла исключительная ситуация (NetObjetToIDispatch45): Ссылка на объект не указывает на экземпляр объекта. Stream = Новый COMОбъект("ADODB.Stream"); Stream.Type = 1; //2 - текст, 1 - бинарный файл Stream.Open(); Stream.LoadFromFile(ИмяФайла); ГзипПоток = Stream.Read(); Stream.Close(); врап=новый COMОбъект("NetObjectToIDispatch45"); CompressionMode = Врап.ПолучитьТип("System.IO.Compression.CompressionMode"); хз2 = врап.СоздатьОбъект("System.IO.Compression.GZipStream(ГзипПоток,CompressionMode.Decompress)"); |
|||
51
oleg_km
20.02.16
✎
18:49
|
хз2 = врап.СоздатьОбъект("System.IO.Compression.GZipStream", ГзипПоток, CompressionMode.Decompress);
Так наверное |
|||
52
Crush
20.02.16
✎
18:51
|
(51) тоже нет:(
хз2 = врап.СоздатьОбъект("System.IO.Compression.GZipStream", ГзипПоток, CompressionMode.Decompress); по причине: Произошла исключительная ситуация (mscorlib): Конструктор для типа "System.IO.Compression.GZipStream" не найден. |
|||
53
Crush
20.02.16
✎
18:51
|
хз2 = врап.СоздатьОбъект("System.IO.Compression.GZipStream()", ГзипПоток, CompressionMode.Decompress);
по причине: Произошла исключительная ситуация (NetObjetToIDispatch45): неверный тип System.IO.Compression.GZipStream() |
|||
54
Crush
20.02.16
✎
19:05
|
Сдвинулся с мёртвой точки.
GZipStream = Врап.ПолучитьТипИзСборки("System.IO.Compression.GZipStream","System.dll"); GZipStream=Врап.ТипКакОбъект(GZipStream); Но пока без результата |
|||
55
Crush
20.02.16
✎
19:32
|
+(54)
На этом пока и закончу. Ком-объект есть, правда по свойствам и не очень похожий на GZipStream, но имя и пространство имён правильные. Осталось придумать как туда пихнуть поток и получить исходящий распакованный поток. Вот я думаю, может поток в данном случае нужно подругому формировать. Средствами тогоже фреймворка, а не COMОбъект("ADODB.Stream")? |
|||
56
Garykom
гуру
20.02.16
✎
19:44
|
врап=новый COMОбъект("NetObjectToIDispatch45");
stream = врап.СоздатьОбъект("System.IO.MemoryStream"); mode = врап.ПолучитьТип("System.IO.Compression.CompressionMode"); gzip = врап.СоздатьОбъект("System.IO.Compression.GZipStream", stream, mode.Decompress); дальше лень (( |
|||
57
Serginio1
20.02.16
✎
22:14
|
(55) Во первых что ты собрался разархивировать?
Зачем тебе ADODB.Stream если есть FileStream https://msdn.microsoft.com/ru-ru/library/47ek66wy(v=vs.110).aspx Завтра напишу. А 30 пробовал? |
|||
58
Serginio1
20.02.16
✎
22:23
|
||||
59
Garykom
гуру
20.02.16
✎
22:24
|
(58) ТСу практически бесполезны эти ссылки, а когда выучит C# и .Net сам все что нужно найдет
из строки в строку ему нужно, далее сам сделает что надо |
|||
60
Serginio1
20.02.16
✎
23:11
|
58 + или File.OpenRead
https://msdn.microsoft.com/ru-ru/library/system.io.file.openread(v=vs.110).aspx меньше параметров. (59) Понятно. Завтра напишу. |
|||
61
Serginio1
21.02.16
✎
08:10
|
Блин разбудили.
Вот алгоритм сжатия строки и результат в Base64 и обратный процесс стр = "Строка для теста компрессии декомпрессии"; // Получим используемые типы MemoryStream=Врап.ПолучитьТип("System.IO.MemoryStream"); UTF8=Врап.ПолучитьТип("System.Text.Encoding").UTF8; CompressionMode = врап.ПолучитьТип("System.IO.Compression.CompressionMode"); СжатыйПоток = врап.СоздатьОбъект(MemoryStream); //Поток куда запишутся сжатые данные zipStr = врап.СоздатьОбъект("System.IO.Compression.GZipStream", СжатыйПоток, CompressionMode.Compress); МассивДанных= UTF8.GetBytes(стр);// Получим массив данных используя кодировку UTF8 ПотокДляСжатия = Врап.СоздатьОбъект(MemoryStream,МассивДанных); // Создадим поток из массива данных ПотокДляСжатия.CopyTo(zipStr); zipStr.Flush(); // Сбросим данные в СжатыйПоток zipStr.Close(); // Закроем GZipStream compressed = СжатыйПоток.ToArray(); // Получим массив байт сжатых данных Convert=Врап.ПолучитьТип("System.Convert"); стр64=Convert.ToBase64String(compressed); // Переведем сжатые данные в Base64 //Сообщить(стр64); //===== Процесс разжатия данных из строки кодированной алгоритмом Base64 compressed=Convert.FromBase64String(стр64); ПотокСжатыхДанных = врап.СоздатьОбъект(MemoryStream,compressed); GZipПоток =врап.СоздатьОбъект("System.IO.Compression.GZipStream",ПотокСжатыхДанных, CompressionMode.Decompress); ПотокРазжатыхДанных = врап.СоздатьОбъект(MemoryStream); GZipПоток.CopyTo(ПотокРазжатыхДанных); Данные=ПотокРазжатыхДанных.ToArray(); output = UTF8.GetString(Данные); Сообщить(output); |
|||
62
Serginio1
21.02.16
✎
11:06
|
61+ Посмотри 30,32 там автоматическая разархивация при получении ответа запроса
|
|||
63
Serginio1
21.02.16
✎
18:01
|
||||
64
Serginio1
22.02.16
✎
09:01
|
При чем если использовать
handler.AutomaticDecompression=Врап.OR(DecompressionMethods.GZip,DecompressionMethods.Deflate) ; Уходит запрос GET https://msdn.microsoft.com/en-us/library/system.net.decompressionmethods(v=vs.110).aspx HTTP/1.1 Host: msdn.microsoft.com Accept-Encoding: gzip, deflate И приходит ответ HTTP/1.1 200 OK Cache-Control: private Content-Length: 17129 Content-Type: text/html; charset=utf-8 Content-Encoding: gzip Кстати общий размер раскодированной строки 87 624 Так, что можно использовать на тонких каналах |
|||
65
Crush
29.02.16
✎
14:12
|
(57) (30) пробовал. Строка не та на выходе получилась. Неделю на больнично был. Сейчас всё заново перепробую.
|
|||
66
Shamandafil
29.02.16
✎
14:25
|
А может стоит передать заголовок
Accept-Encoding: identity Указав, что клиент может получать только несжатые данные. |
|||
67
Crush
29.02.16
✎
14:43
|
(66) Исключено:) Клиенту должны отправляться сжатые данные, и распаковка должна проходить на стороне клиента.
|
|||
68
Crush
01.03.16
✎
16:58
|
(61) Автор, ты ГЕНИЙ!!! Спасибо огромное!!!
Вот рабочий код. В файле лежит сжатая строка. &НаКлиенте Функция ОтжатьПоток(МассивСжатыхБайт) врап=новый COMОбъект("NetObjectToIDispatch45"); MemoryStream=Врап.ПолучитьТип("System.IO.MemoryStream"); UTF8=Врап.ПолучитьТип("System.Text.Encoding").UTF8; CompressionMode = врап.ПолучитьТип("System.IO.Compression.CompressionMode"); ПотокСжатыхДанных = врап.СоздатьОбъект(MemoryStream,МассивСжатыхБайт); GZipПоток =врап.СоздатьОбъект("System.IO.Compression.GZipStream",ПотокСжатыхДанных, CompressionMode.Decompress); ПотокРазжатыхДанных = врап.СоздатьОбъект(MemoryStream); GZipПоток.CopyTo(ПотокРазжатыхДанных); Данные=ПотокРазжатыхДанных.ToArray(); output = UTF8.GetString(Данные); Возврат output; КонецФункции &НаКлиенте Процедура Net2(Команда) Stream = Новый COMОбъект("ADODB.Stream"); Stream.Type = 1; //2 - текст, 1 - бинарный файл Stream.Open(); Stream.LoadFromFile(ИмяФайла); Сообщить(ОтжатьПоток(Stream.Read())); КонецПроцедуры |
|||
69
Shamandafil
01.03.16
✎
17:10
|
(68) Здесь ADODB.Stream лишний. Почему System.IO.FileStream не использован, можно было на переупаковках сэкономить. И потоки зря не закрыты после использования.
|
|||
70
Crush
01.03.16
✎
17:49
|
(69) ADODB.Stream здесь только для теста (что б вытащить строку из файла)
А так то сжатый массив получаю из WinHttp.WinHttpRequest.5.1 WinHttp.responseBody |
|||
71
Garykom
гуру
01.03.16
✎
18:12
|
(69) адодб не лишний походу, а чтобы ВК на клиенте не ставить, только нас сервере
|
|||
72
Serginio1
01.03.16
✎
18:21
|
(71) Используй HTTPClient. ReadAsStream().Result
Меньше телодвижений. HttpClient=Врап.ПолучитьТипИзСборки("System.Net.Http.HttpClient","System.Net.Http.dll"); Клиент=Врап.СоздатьОбъект(HttpClient,handler); ПотокСжатыхДанных =Клиент.GetStreamAsync(uriSources).Result; |
|||
73
Serginio1
01.03.16
✎
18:23
|
Или
ПотокСжатыхДанных =Врап.ПолучитьТип("System.IO.File").OpenRead(ИмяФайла); |
|||
74
Serginio1
01.03.16
✎
18:24
|
Правда не забывай закрыть ресурсы
Процедура ЗакрытьРесурс(Ресурс) Врап.ПолучитьИнтерфейс(Ресурс,"IDisposable").Dispose(); КонецПроцедуры ЗакрытьРесурс(ПотокСжатыхДанных) |
|||
75
Serginio1
01.03.16
✎
19:45
|
72 Правильно
HttpClient=Врап.ПолучитьТипИзСборки("System.Net.Http.HttpClient","System.Net.Http.dll"); Клиент=Врап.СоздатьОбъект(HttpClient); ПотокСжатыхДанных =Клиент.GetStreamAsync(uriSources).Result; Телодвижений значительно меньше. А если приходит ответ Content-Encoding: gzip То должен автоматически разжиматься как в 30 |
|||
76
Crush
02.03.16
✎
12:00
|
(72) Попробую с ним разобраться как заголовки передавать и POST-запрос.
(74) т.е. ресурс сам не закрывается при выходе из процедуры? Или это от того, что переменная врап - глобальная? |
|||
77
trdm
02.03.16
✎
12:48
|
http://www.realcoding.net/articles/gzip-upakovkaraspakovka-v-pamyati.html
+ http://rsdn.ru/article/qna/com/simplcom.xml И будет то, что дохтур прописал. |
|||
78
Garykom
гуру
02.03.16
✎
12:50
|
(77) неа, для 1С-ника проще с .Net разобраться чем с C++ и написанием своих ВК или аналогов
|
|||
79
Serginio1
02.03.16
✎
12:59
|
(76) А они автоматически передаются
HttpClient=Врап.ПолучитьТипИзСборки("System.Net.Http.HttpClient","System.Net.Http.dll"); handler = врап.СоздатьОбъект("System.Net.Http.HttpClientHandler"); DecompressionMethods= Врап.ПолучитьТип("System.Net.DecompressionMethods"); handler.AutomaticDecompression=Врап.OR(DecompressionMethods.GZip,DecompressionMethods.Deflate) ; Сообщить(Врап.Встроку(handler.AutomaticDecompression)); Клиент=Врап.СоздатьОбъект(HttpClient,handler) |
|||
80
Serginio1
02.03.16
✎
13:01
|
(76) Особенность .Net в том, что если ты не закрыл ресурсы, то они закроются только после сборки мусора, а этот момент может наступить не скоро
|
|||
81
Serginio1
02.03.16
✎
14:10
|
Посмотри фиддлером какие заголовки отправляются и приходят
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |