Чтение и сохранение части потока файлов через IdHTTP и IdSSLIOHandlerSocketOpenSSL1


1 принят

TIdHTTP.Response.TIdHTTP.Head()Свойство говорит вам , принимает ли сервер байтовые диапазоны для данного URL, после того, как вы запросили URL. Вы должны использовать AcceptRangesсвойство для фактического указания диапазона при запросе URL-адреса. Вы можете использовать TIdHTTP.Get()для проверки AcceptRangesзначения, прежде чем запрашивать фактические данные URL, используя соответственно AcceptRangesили без диапазона байтов.

Однако, если AcceptRangesсвойство корректно после вызова TIdHTTP.Head(), то сервер просто не поддерживает диапазоны байтов для этого URL-адреса, поэтому у вас нет выбора, кроме как загружать данные URL целиком и просто отбрасывать все части, которые вы не хотите от него , Вы можете использовать TIdEventStreamдля этого или собственный производный TStreamкласс, который переопределяет виртуальный TStream.Write()метод. Любой подход позволит вам игнорировать загружаемые данные, просто отслеживать, сколько байтов «записывается» в ваш поток, игнорируя байты до тех пор, пока вы не достигнете желаемого начального смещения, а затем сохраните оставшиеся данные по мере необходимости до тех пор, пока желательное конечное смещение .

SSL, Дельфы-7, Инди, idhttp,

ssl,delphi-7,indy,idhttp,

0

Ответов: 1


1 принят

TIdHTTP.Response.TIdHTTP.Head()Свойство говорит вам , принимает ли сервер байтовые диапазоны для данного URL, после того, как вы запросили URL. Вы должны использовать AcceptRangesсвойство для фактического указания диапазона при запросе URL-адреса. Вы можете использовать TIdHTTP.Get()для проверки AcceptRangesзначения, прежде чем запрашивать фактические данные URL, используя соответственно AcceptRangesили без диапазона байтов.

Однако, если AcceptRangesсвойство корректно после вызова TIdHTTP.Head(), то сервер просто не поддерживает диапазоны байтов для этого URL-адреса, поэтому у вас нет выбора, кроме как загружать данные URL целиком и просто отбрасывать все части, которые вы не хотите от него , Вы можете использовать TIdEventStreamдля этого или собственный производный TStreamкласс, который переопределяет виртуальный TStream.Write()метод. Любой подход позволит вам игнорировать загружаемые данные, просто отслеживать, сколько байтов «записывается» в ваш поток, игнорируя байты до тех пор, пока вы не достигнете желаемого начального смещения, а затем сохраните оставшиеся данные по мере необходимости до тех пор, пока желательное конечное смещение .

SSL, Дельфы-7, Инди, idhttp,
Похожие вопросы