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

Вниз

Разобрать Chunked encoded   Найти похожие ветки 

 
Danger ©   (2008-01-09 19:25) [0]

Скачиваю по HTTP web-страницу с http-сервера в chunked transfer-encoding, кладу все скачанное в TStream. Есть у кого-нибудь готовый алгоритм разбора chunked encoded, чтоб получить на выходе обычную страницу в  html-представлении ?
Заранее спасибо.


 
MetalFan ©   (2008-01-09 21:03) [1]

может подсмотреть в Indy?


 
serega123   (2008-10-03 05:51) [2]

Та же проблемма!!!
перерыл весь интернет, решения не нашел.

Мои заголовки (это я смотрю в браузере, с помощью ieHTTPHeaders):

GET /pda/ HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*
Accept-Language: ru
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; InfoPath.1)
Host: mail.yandex.ru
Connection: Keep-Alive

Заголовки ответа сервера (тоже посмотрел в браузере):

HTTP/1.1 200 OK
Cache-Control: max-age=0, must-revalidate, proxy-revalidate, no-cache, no-store, private
Connection: Keep-Alive
Content-Encoding: gzip
Content-Type: text/html; charset=windows-1251
Date: Thu, 02 Oct 2008 23:08:19 GMT
Expires: Thu, 02 Oct 2008 23:13:19 GMT
Last-Modified: Thu, 02 Oct 2008 23:08:19 GMT
Pragma: no-cache
Server: BAIDA/2.0.1
Transfer-Encoding: Chunked


Мой код:

procedure TForm1.Button1Click(Sender: TObject);
var
 InStream, OutStream: TmemoryStream;
begin
 IdHTTP1.IOHandler:=IdIOHandlerStack1;
 IdHTTP1.CookieManager:=IdCookieManager1;
 IdHTTP1.Compressor:=IdCompressorZLibEx1;

 IdHTTP1.AllowCookies:=true;
 IdHTTP1.HandleRedirects:=true;

 IdHTTP1.Request.Accept:="image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*";
 IdHTTP1.Request.AcceptLanguage:="ru";
 IdHTTP1.Request.AcceptEncoding:="gzip, deflate";
 IdHTTP1.Request.UserAgent:="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; InfoPath.1)";
 IdHTTP1.Request.Host:="mail.yandex.ru";
 IdHTTP1.Request.Connection:="Keep-Alive";

 InStream:=TMemoryStream.Create;
 OutStream:=TMemoryStream.Create;

 IdHTTP1.Get("http://mail.yandex.ru/pda/",InStream);
 IdCompressorZLibEx1.DecompressGZipStream(InStream,OutStream);
 Memo1.Lines.LoadFromStream(OutStream);

 InStream.Free;
 OutStream.Free;
end;

Delphi 2006, Indy 10

код наглухо виснет на строчке IdHTTP1.Get...

Помогите, люди добрые!!!


 
Eraser ©   (2008-10-07 00:43) [3]

procedure TForm1.Button2Click(Sender: TObject);
var
InStream, OutStream: TmemoryStream;
begin
IdHTTP1.IOHandler:=IdIOHandlerStack1;
IdHTTP1.CookieManager:=IdCookieManager1;
IdHTTP1.Compressor:=IdCompressorZLib1;

IdHTTP1.AllowCookies:=true;
IdHTTP1.HandleRedirects:=true;

IdHTTP1.Request.Accept:="image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, application/x-shockwave-flash, */*";
IdHTTP1.Request.AcceptLanguage:="ru";
IdHTTP1.Request.AcceptEncoding:="gzip, deflate";
IdHTTP1.Request.UserAgent:="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; InfoPath.1)";
IdHTTP1.Request.Host:="mail.yandex.ru";
IdHTTP1.Request.Connection:="Keep-Alive";

InStream:=TMemoryStream.Create;
OutStream:=TMemoryStream.Create;

IdHTTP1.Get("http://mail.yandex.ru/pda/",InStream);
InStream.Position := 0;
//IdCompressorZLibEx1.DecompressGZipStream(InStream,OutStream);
Memo1.Lines.LoadFromStream(InStream);

InStream.Free;
OutStream.Free;
end;

все прекрасно работает.
D2009, Indy 10.


 
cerber   (2008-12-16 23:03) [4]

2> Eraser ©   (07.10.08 00:43) [3]
здается мне OutStream вообще не нужен)



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

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

Наверх




Память: 0.47 MB
Время: 0.01 c
6-1199895934
Danger
2008-01-09 19:25
2010.11.21
Разобрать Chunked encoded


6-1229416006
Я только учусь
2008-12-16 11:26
2010.11.21
Подсчет трафика


15-1281602585
boriskb
2010-08-12 12:43
2010.11.21
К спецам по PHP


15-1281587871
IGray
2010-08-12 08:37
2010.11.21
Ищу исходники функции IntToStr на паскале


15-1280295714
И. Павел
2010-07-28 09:41
2010.11.21
Ученые "перепрограммировали" клетку