Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.23;
Скачать: CL | DM;

Вниз

Страничку через HTTP, но не всю.   Найти похожие ветки 

 
Shutov ©   (2003-11-10 21:12) [0]

Как можно загрузить первые n строк web-страницы через протокол HTTP? (И вообще возможно ли это?) Конкретный код приветствуется! Всем заранее спасибо!


 
Reindeer Moss Eater ©   (2003-11-11 08:45) [1]

составить http request
тспклиент.writeln(request);
тспклиент.writeln();
while needtodownload do
begin
глобал_вар_виз_контент:=глобал_вар_виз_контент + тспклиент.readbuff;
needtodownload:= not пора_заканчивать;
end;


 
savva ©   (2003-11-11 08:46) [2]

первые n строк - это как? я довольно часто видел хтмл написанный в одну строку:)


 
FireHack ©   (2003-11-11 09:02) [3]

Wininet


 
Reindeer Moss Eater ©   (2003-11-11 09:05) [4]

первые n строк - это как?

Например первые 5 строк из такого ресурса:
www.somedomaim.somdomain/somefolder/sometextfile.txt


 
Shutov ©   (2003-11-12 09:36) [5]

2Reindeer Moss Eater
1. То есть использовать TCPClient?
2. Ну так и такой ресурс подойдёт (sometextfile.txt).

2savva Тогда m символов, но мы с таким же успехом можем
пересчитать в строках по символу перевода строки ;) Так ведь?


 
Shutov ©   (2003-11-16 08:39) [6]

Мне посоветовали использовать у IdHTTP процедуру Work. Но
почему-то локально всё работает (отсоединяемся когда нужное
примем), но вот в сети это неполучается :( Подскажите в чём
может быть проблема?


procedure TForm1.HTTPWork(Sender: TObject; AWorkMode: TWorkMode;
const AWorkCount: Integer);
begin
Memo1.Lines.Add("Принято: "+IntToStr(AWorkCount));
if AWorkCount>8000 then begin
HTTP.Disconnect;
Memo1.Lines.Add("Отключились");
end;
end;


 
Reindeer Moss Eater ©   (2003-11-17 14:00) [7]

Проблема может быть в чем угодно


 
Anatoly Podgoretsky ©   (2003-11-17 14:06) [8]

Shutov © (12.11.03 09:36) [5]
Не так, переводы строк не учитываются, что с ними, что без. Есть понятия абзацы, есть понятия байты, если сервер поддерживает диапазоны, тогда можно считать нужное количество байт.


 
Reindeer Moss Eater ©   (2003-11-17 14:19) [9]

Мне посоветовали использовать у IdHTTP процедуру Work.

Это событие конечно можно использовать, но:
1. Придется искать способ прерывания синхронного метода Get.
2. Не будет полного контроля за длиной считываемого контента.

если сервер поддерживает диапазоны, тогда можно считать нужное количество байт.

Даже если сам сервер поддерживает диапазоны, далеко не всегда можно считать нужное количество байт. Простой пример - пользовательский cgi-скрипт, который выполняется на сервере, понимающем диапазон, но сам (скрипт) не обращающий никакого внимания на указанный в заголовке запроса range


 
Shutov ©   (2003-11-21 09:54) [10]

2Anatoly Podgoretsky Конечная цель немного другая (см.ниже).
2Reindeer Moss Eater 1)Зачем прерывать Get?
2)Это не обязательно (см.ниже).

Уточню всё-таки что мне нужно: В конечном итоге оказалось, что достаточно считать больше n-го количества байт. То есть если примим немного больше - пусть. Это не критично.

На деле же оказалось, что устанавливая буфер у IdHTTP в 8кб при локальном тестировании всё работает, но в Интернете почему-то сервер делит пакеты по приблизительно 4кб. =( Поэтому приходится считать в Work сколько мы приняли и суммировать это. При превышеннии лимита обнулять счётчик и отключаться. НО!!! Почему-то с буфером на 8кб. это не работает :( Какая-то ошибка при соединении (текст части загруженной страницы мы также не получаем). При уменьшении буфера до 4кб. вроде бы работает. У меня вопром: Почему всё-таки вылетаем в ошибку (которую я описал выше)? Возможно ли, что эта ошибка будет и при буфере в 4кб., например, при других условиях?


 
Reindeer Moss Eater ©   (2003-11-21 09:59) [11]

На длинном пути к веб серверу пакет преодолевает кучу маршрутизаторов. И у каждого может быть свое представление о правильной длине пакетов.

Почему всё-таки вылетаем в ошибку (которую я описал выше)?

И где выше ты её описал?


 
Shutov ©   (2003-11-21 11:18) [12]

2Reindeer Moss Eater Я про эту ошибку: Почему-то с буфером на 8кб. это не работает :( Какая-то ошибка при соединении...


 
Reindeer Moss Eater ©   (2003-11-21 11:22) [13]

Этот стон у вас ошибкой зовется?



Страницы: 1 вся ветка

Текущий архив: 2004.01.23;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.016 c
3-72627
sokohigh
2003-12-26 18:41
2004.01.23
Как сказать


3-72677
IgoX
2003-12-25 13:53
2004.01.23
DBGrid & PickList


6-72865
axx
2003-11-21 08:49
2004.01.23
Подскажите как передать Record через SendBuf


1-72795
www85
2004-01-13 09:10
2004.01.23
Как отпечатать?


1-72708
Inch_
2004-01-11 22:22
2004.01.23
Стеганография - нужны форматы мультимедиа файлов.