Форум: "KOL";
Текущий архив: 2009.03.29;
Скачать: [xml.tar.bz2];
ВнизПрошу учесть и исправить ошибку в компоненте KOLHTTPDownload Найти похожие ветки
← →
vastani (2007-12-25 12:43) [0]Качалка хороша, но при попытке качнуть "тело" html страницы по ссылке
(очень нужна была эта http://openbox.ua/download.php?&get=OPENBOX-F300FTA/)
ВИСЯК проги был жесткий. Пришлось повышать свою грамотность в сокетных вопросах и... отлаживаться включая тело компоненты.
Ошибочка, хоть и элементарна, но имеется. Собственно похоже на то, что автор сделал Ctrl+V несколько выше нежели строка где должна собственно находиться :)...
Короче привожу ИСПРАВЛЕННЫЙ обработчик "сокет-приёмника" этой качалки с моими коментами, которые писались по ходу вникания.
Привожу немедленно, т.к. быть может кто то мучается именно сейчас, а
победа так близка ;) Успешного кодинга!
//-----------------------------------------------------
procedure THTTPDownload.On_Read( SocketMessage: TWMSocket );
var Ch: Char;
begin
while ( fSocket.Count > 0 ) do
if ( fSocket.ReadData( @Ch, 1 ) = 1 ) then
// анализируем прочитанные из сокета данные
begin
// Это пока заголовок, что с самого начала сеанса получаем???
if ( NOT fHdrAcct ) then
begin
// читаем и анализируем заголовки, т.к. флаг наличия заголовка не установлен (пока)
if ( Ch = #13 ) then // это признак конец текущей анализируемой строки?
begin
fSocket.ReadData( @Ch, 1 ); // #10
if fHdrStr = "" then // #13#10#13#10 - http header end
begin
fHdrAcct := TRUE; // заголовок обнаружен
AnalyzeHeader; // теперь его обработаем
Continue; // будем продолжать принимать данные из сокета
end;
fHdrList.Add( fHdrStr );// добавить запись
fHdrStr := ""; // обнулим содержание буферного накопителя
end
else
fHdrStr := fHdrStr + Ch;// побайтно набиваем накопитель...
end
else
begin
fDStream.Write( Ch, 1 );// читаем поток данных из сокета побайтно
fHdrStr := fHdrStr + Ch;// и побайтно суем в накопитель
Inc( fRecvCount ); // не забываем приращать их количество
end
end
// а вот если данные из сокета кончились, то генерим следующее событие
else
begin
if Assigned( fOnRecv ) then
fOnRecv( @Self, fRecvCount, fHeader.ContentLength );
EXIT;// гарантированно и обязательно выходим, не допуская "висяков"!
end;
end;
//-----------------------------------------------------
← →
Compiler (2007-12-25 20:05) [1]
> быть может кто то мучается именно сейчас
Как раз работаю с ним, но до этого глюка пока недобрался. Файлы качаются нормально. Попробую и страницы с приведенными исправлениями.
← →
vastani (2007-12-27 10:32) [2]В том то и дело, что ФАЙЛЫ КАЧАЮТСЯ!
А вот перед тем как качать, я хочу посмотреть страницу "HTML" (сылку на которую указывает пользователь изначально, скажем), где есть ряд ссылок на скачиваемые файлы, т.е. затем я их буду качать по конкретной выбранной ссылке из перечня с этой скачанной страницы.
ПОЛУЧЕНИЕ (загрузка) этого перечня ссылок обречена... теперь БЫЛА ;)
Страницы: 1 вся ветка
Форум: "KOL";
Текущий архив: 2009.03.29;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.051 c