On-line: Andrey, Pasha, SergKis, гостей 0. Всего: 3 [подробнее..]
АвторСообщение



Пост N: 1
Зарегистрирован: 04.04.16
ссылка на сообщение  Отправлено: 06.04.16 09:27. Заголовок: Борьба с gZip


С месяц тому назад обнаружил что моя утилита которая уже года два по расписанию периодически запускается на сервере и качает файлы из интернета - перестала получать файлы.

Оказалось - изменилась структура страницы.
Поправил утилиту - опять файлы стали скачиваться. С 8/03. А с 24/03 - опять облом.

Оказалось что поменялась кодировка на UTF-8 и включилось сжатие gZip.
HTTP/1.1 200 OK
...
Content-Type: text/html; charset=UTF-8
...
Content-Encoding: gzip
Connection: close

Вырезал из полученных данных сжатую часть и принялся декодировать.
Честный gZip обломался - "неожиданный конец файла".
gZip -l ... показывает что внутри почти 500МБ файл сжат до 5000 Байт
         compressed        uncompressed  ratio uncompressed_name 
5708 436207711 100.0% txtgz.txt

WinRar и 7Zip показываю тоже самое но молча правильно распаковывают !
Встроенный hb_Zip - не распаковал.

Пришлось делать вызов внешней программы.
WinRar консольный работает только с .rar .
Остался 7Zip. Его и дожимал.
Получилось так.

txt := oSock:Get(cPage) 
...
pos1:=hb_at(CRLF+CRLF, txt, 0) //конец http headers
cFileGZ="html.txt.gz"
//сохранить сжатую часть в виде файла
memowrit( cFileGZ, substr(txt,pos1+len(CRLF+CRLF)) )
//распаковать сохраненный файл в другой файл
EXECUTE FILE "7z.exe e html.txt.gz -aoa " WAIT
//загрузить и перекодировать распакованный файл
txt:= HB_UTF8TOSTR(memoread("html.txt"))


И далее уже работавшая разборка html-текста в кодировке 1251.

Утилита заработала. Файлы пошли.
Но удовлетворения нет - не нравится мне вызов другого процесса.
Нет ли чего подходящего чтобы статически примотать к харбор-екзешнику?




Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 1 [только новые]







Пост N: 337
Зарегистрирован: 16.12.08
ссылка на сообщение  Отправлено: 06.04.16 10:27. Заголовок: в xHarbour в contrib..


в xHarbour в contrib есть библиотека работы с 7z (sevenzip). Можна попробовать использовать.


Спасибо: 0 
ПрофильЦитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 307
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет