brightyang
关注
brightyang
brightyang
本版等级:T7
Blank Blank Blank
#1 得分:40 回复于: 2007-09-27 17:05:00
delphi 利用indy解码Gzip的网页2007-09-08 18:36function WebRequest.Get(strURL, strReferer: String): String;
var
strHTML: String;
inStream, outStream: TMemoryStream;
m : TStrings;
begin
inStream := TMemoryStream.Create;
m := TStrings.Create;

if sck.Connected = true then
begin
sck.Disconnect;
while sck.Connected = true do
Application.ProcessMessages;
end;
SetHeader(strReferer);

sck.Get(strURL, inStream);
if sck.Response.ContentEncoding = 'gzip' then
begin
outStream := TMemoryStream.Create;
sck.Compressor.DecompressGZipStream(inStream, outStream);
outStream.Position := 0;
m.LoadFromStream(outStream);
strHTML := m.Text;
end
else
begin
m.LoadFromStream(inStream);
strHTML := m.Text;
end;

prevPage := strURL;
strBuff := strHTML;
Result := strHTML;
end;



对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
hongqi162
关注
hongqi162
hongqi162
本版等级:T9
Blank Blank Blank
更多勋章
#2 得分:0 回复于: 2007-09-27 17:06:02
这么快?
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
brightyang
关注
brightyang
brightyang
本版等级:T7
Blank Blank Blank
#3 得分:0 回复于: 2007-09-27 17:09:25
哦耶~~~

忘了标了,转自blog
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
brightyang
关注
brightyang
brightyang
本版等级:T7
Blank Blank Blank
#4 得分:0 回复于: 2007-09-27 17:10:17
月亮
扔个星星给我嘛
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
hui717
关注
hui717
hui717
本版等级:T3
#5 得分:0 回复于: 2007-09-27 17:20:41
顶,接分
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
hongqi162
关注
hongqi162
hongqi162
本版等级:T9
Blank Blank Blank
更多勋章
#6 得分:0 回复于: 2007-09-27 17:25:03
csdn不让啊,他们设计的太不人性化了
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
brightyang
关注
brightyang
brightyang
本版等级:T7
Blank Blank Blank
#7 得分:0 回复于: 2007-09-27 17:32:31
:)

那就散点分哇

对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
jackygan
关注
jackygan
jackygan
本版等级:T1
Blank Blank
#8 得分:0 回复于: 2007-09-27 17:33:20
可否从提交url到接收到字符串,解字符等操作列出来?谢谢。
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
jackygan
关注
jackygan
jackygan
本版等级:T1
Blank Blank
#9 得分:0 回复于: 2007-09-27 17:38:19
到底是Indy的那个组件?
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
brightyang
关注
brightyang
brightyang
本版等级:T7
Blank Blank Blank
#10 得分:0 回复于: 2007-09-27 20:42:44
组件当然还是idhttp啥

只是加上哪一个过程OK?
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
jackygan
关注
jackygan
jackygan
本版等级:T1
Blank Blank
#11 得分:0 回复于: 2007-09-27 21:13:24
函数重载?不太懂。
另外,sck好像还没有申明。
可否具体一些使用的方法?谢谢。
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
jackygan
关注
jackygan
jackygan
本版等级:T1
Blank Blank
#12 得分:0 回复于: 2007-09-28 09:10:27
似乎楼上给的那段代码有问题,一直没有运行起来?
有那位有过这样经验的?谢谢大家。
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
liu19801204
关注
liu19801204
liu19801204
本版等级:T1
#13 得分:0 回复于: 2007-09-28 09:17:28
up
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
jackygan
关注
jackygan
jackygan
本版等级:T1
Blank Blank
#14 得分:0 回复于: 2007-09-28 12:30:32
有人吗?回应一下,谢谢。
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
jackygan
关注
jackygan
jackygan
本版等级:T1
Blank Blank
#15 得分:0 回复于: 2007-09-29 15:54:17
UP, who knows?
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
wangchengfn
关注
wangchengfn
wangchengfn
本版等级:T1
#16 得分:0 回复于: 2011-01-01 20:33:16
路过,顶一下
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
liangqingzhi
关注
liangqingzhi
老之
本版等级:T9
Blank Blank Blank
#17 得分:30 回复于: 2011-01-05 09:52:35
IdCompressorZLibEx控件的DecompressGZipStream方法
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
ysai
关注
ysai
ysai
本版等级:T7
#18 得分:30 回复于: 2011-01-05 10:16:24
delphi自带有zlib库咋不用
uses
Zlib;

Delphi/Pascal code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function CFFunc.Compression.Zlib.DeCompressionStream(const AInStream,
AOutStream: TStream) : Boolean;
var
ds : TDeCompressionStream;
buff : array[1..4096] of Byte;
iread : integer;
begin
Result := True;
AInStream.Position := 0;
try
ds := TDeCompressionStream.Create(AInStream);
try
repeat
iread := ds.Read(buff, sizeof(buff));
if iread > 0 then
AOutStream.Write(buff, iread);
until (iRead = 0);
finally
ds.Free;
end;
except
Result := False;
end;
end;