Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 InDy http и GZip  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 13046
Для скачивания страниц в GZip-encoding подключаю TIdCompressorZLib.

    fIdCompressorZLib := TIdCompressorZLib.Create(fIdHTTP);
    fIdHTTP.Compressor := fIdCompressorZLib;


Я думал, что InDy как-то умеет автоматически без моего участия скачивать и запакованные странички и незапакованные.
Дело в том, что сервер отдает html в виде GZip, а некоторые файлы типа *.js - без GZip.

Т.е. придётся как-то анализировать заголовок и уже после этого понимать: подключать IdCompressorZLib или нет.
Т.е. предварительно нужно скачивать только заголовок, а потом уже остальное?

А как это правильно реализовать, не знаю, потому что HTTP.Get скачивает сразу всё.
14 мар 19, 12:50    [21832394]     Ответить | Цитировать Сообщить модератору
 Re: InDy http и GZip  [new]
Василий 2
Member

Откуда:
Сообщений: 614
Ну и получай гет-ом. А как получишь, смотри Content-encoding header и распаковывай при надобности. В чем проблема-то?
14 мар 19, 13:39    [21832491]     Ответить | Цитировать Сообщить модератору
 Re: InDy http и GZip  [new]
Arioch
Member

Откуда:
Сообщений: 10837
X11
Дело в том, что сервер отдает html в виде GZip


заголовки покажи, и запроса и ответа
14 мар 19, 13:41    [21832498]     Ответить | Цитировать Сообщить модератору
 Re: InDy http и GZip  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 13046
по идее, Инди сами должны распаковывать
14 мар 19, 13:57    [21832539]     Ответить | Цитировать Сообщить модератору
 Re: InDy http и GZip  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 13046
Arioch,

слева - загрузка js файла
+
Картинка с другого сайта.
14 мар 19, 14:02    [21832551]     Ответить | Цитировать Сообщить модератору
 Re: InDy http и GZip  [new]
Arioch
Member

Откуда:
Сообщений: 10837
заголовки, заголовки....


кто сказал, что там вообще GZip-паковка, а не Zip например ?

или что там передаётся именно html-страничка
14 мар 19, 14:03    [21832552]     Ответить | Цитировать Сообщить модератору
 Re: InDy http и GZip  [new]
Arioch
Member

Откуда:
Сообщений: 10837
не открывается кратинка, и вообще, мы ж на программерском сайте, тeкстом скопируй
14 мар 19, 14:04    [21832556]     Ответить | Цитировать Сообщить модератору
 Re: InDy http и GZip  [new]
Ghost Writer
Member

Откуда: Россия
Сообщений: 802
X11
А как это правильно реализовать, не знаю, потому что HTTP.Get скачивает сразу всё.
кроме GET и POST есть еще HEAD.
Но сначала лучше разобраться в заголовках при запросе html и .js
14 мар 19, 14:04    [21832558]     Ответить | Цитировать Сообщить модератору
 Re: InDy http и GZip  [new]
Arioch
Member

Откуда:
Сообщений: 10837
X11
Т.е. предварительно нужно скачивать только заголовок, а потом уже остальное?


тиритисски в HTTP протоколе для такого служит команда HEAD (вместо GET)
но вроде не все сервера ее поддерживают
14 мар 19, 14:05    [21832560]     Ответить | Цитировать Сообщить модератору
 Re: InDy http и GZip  [new]
Arioch
Member

Откуда:
Сообщений: 10837
кстати, ты Indy свежий скачал, или какой-то старый?

а то меня радуют такие например приколы, как
https://robertocschneiders.wordpress.com/2013/05/17/soap-and-rest-using-gzip-with-delphi-client/
IdHttp := TIdHTTP.Create(nil);
IdHttp.Compressor := TIdCompressorZLib.Create(IdHttp);

NOTE: This does not work in Delphi XE2. Access violation occurs. Works in XE3.
14 мар 19, 14:11    [21832572]     Ответить | Цитировать Сообщить модератору
 Re: InDy http и GZip  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 13046
Arioch
не открывается кратинка, и вообще, мы ж на программерском сайте, тeкстом скопируй Картинка с другого сайта.


проверил - открывается

К сообщению приложен файл. Размер - 52Kb
14 мар 19, 14:12    [21832573]     Ответить | Цитировать Сообщить модератору
 Re: InDy http и GZip  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 13046
за head - спасибо, я не знали или забыл
14 мар 19, 14:13    [21832574]     Ответить | Цитировать Сообщить модератору
 Re: InDy http и GZip  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 13046
Arioch
кстати, ты Indy свежий скачал, или какой-то старый?


встроенный в Tokyo
14 мар 19, 14:14    [21832575]     Ответить | Цитировать Сообщить модератору
 Re: InDy http и GZip  [new]
Arioch
Member

Откуда:
Сообщений: 10837
X11,

Судя по accept-encoding Indy осознал, что ты ему компрессор подключил, это уже хорошо.

дальше смотри по исходникам indy

там, где он анализирует content-encoding он должен пойти в ветку, которая использует Compressor, и через него получить(?) распакованный ответ и куда-то(?) его положить, где ты его сможешь забрать

P.S. а много тебе таких файлов надо качать? м.б. тупо попросить windows, пусть сама скачает?
14 мар 19, 14:16    [21832582]     Ответить | Цитировать Сообщить модератору
 Re: InDy http и GZip  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 13046
Arioch
Судя по accept-encoding Indy осознал, что ты ему компрессор подключил, это уже хорошо.


это же из Firefox снимок
14 мар 19, 14:16    [21832583]     Ответить | Цитировать Сообщить модератору
 Re: InDy http и GZip  [new]
Arioch
Member

Откуда:
Сообщений: 10837
X11
Arioch
кстати, ты Indy свежий скачал, или какой-то старый?


встроенный в Tokyo


опять же, сравни со свежим, не меняли ли там чего в районе сжатия

P.S. мне много с HTTP работать не приходилось, я обычно пользовался или Synapse (она простая, чем и хороша) или вообще ActiveX
14 мар 19, 14:17    [21832585]     Ответить | Цитировать Сообщить модератору
 Re: InDy http и GZip  [new]
Arioch
Member

Откуда:
Сообщений: 10837
X11
Arioch
Судя по accept-encoding Indy осознал, что ты ему компрессор подключил, это уже хорошо.


это же из Firefox снимок


охренеть....

ну тогда делай такие же 2 снимка из Indy и сравнивай заголовки
14 мар 19, 14:18    [21832587]     Ответить | Цитировать Сообщить модератору
 Re: InDy http и GZip  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 13046
А Web.HTTPApp умеет скачивать? я там такого метод не нашёл.
14 мар 19, 14:36    [21832637]     Ответить | Цитировать Сообщить модератору
 Re: InDy http и GZip  [new]
Arioch
Member

Откуда:
Сообщений: 10837
тут куча примеров, даже какой-то TDownloadURL

https://stackoverflow.com/questions/301546/whats-the-simplest-way-to-call-http-get-url-using-delphi

И я не про HTTPApp :-)
14 мар 19, 15:58    [21832761]     Ответить | Цитировать Сообщить модератору
 Re: InDy http и GZip  [new]
Arioch
Member

Откуда:
Сообщений: 10837
тут куча примеров, даже какой-то TDownloadURL

https://stackoverflow.com/questions/301546/whats-the-simplest-way-to-call-http-get-url-using-delphi

И я не про HTTPApp :-)
14 мар 19, 15:58    [21832762]     Ответить | Цитировать Сообщить модератору
 Re: InDy http и GZip  [new]
Vizit0r
Member

Откуда:
Сообщений: 604
насколько я помню из давней работы с IdHTTP и TIdCompressorZLib - оно подключает декомпрессор, только если видит в Content-Type что-то типа gzip, как у тебя с html.
А в случае js, где content-type вообще отсутствует - декомпрессор вроде не должен задействоваться.

Но в любом случае, надо закопаться в обработчик ответа в IdHTTP, и смотреть что и как. Ничего такого особо хитрого там нет.
14 мар 19, 20:29    [21833026]     Ответить | Цитировать Сообщить модератору
 Re: InDy http и GZip  [new]
Vizit0r
Member

Откуда:
Сообщений: 604
т.е. не content-type, а encoding, конечно же.
14 мар 19, 20:30    [21833027]     Ответить | Цитировать Сообщить модератору
 Re: InDy http и GZip  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 13046
Vizit0r
А в случае js, где content-type вообще отсутствует - декомпрессор вроде не должен задействоваться.


Вот и я о том. Не должен. Но в нормальном виде скачивается только если отключить декомпрессор иначе - кракозабры.
15 мар 19, 09:42    [21833308]     Ответить | Цитировать Сообщить модератору
 Re: InDy http и GZip  [new]
Cobalt747
Member

Откуда:
Сообщений: 2097
X11,

Вот ты вроде нормальный программист, расскажи - как ты забываешь о такой возможности, как отладка по исходникам?!
15 мар 19, 11:16    [21833434]     Ответить | Цитировать Сообщить модератору
 Re: InDy http и GZip  [new]
X11
Member

Откуда: Kharkiv, Ukraine
Сообщений: 13046
Cobalt747, не забываю, просто там СТОООЛЬКО "внутренностей", терпения, наверное не хватает
18 мар 19, 10:14    [21835633]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Delphi Ответить