DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: deliping
今日帖子: 22
在线用户: 9
导航: 论坛 -> Web应用开发 斑竹:bodies  
作者:
男 cenunus (cenunus) ★☆☆☆☆ -
普通会员
2024/3/26 22:50:55
标题:
请教对tnethttpclient返回的流解压缩 浏览:254
加入我的收藏
楼主: function GetResult(Response: IHTTPResponse):THttpResult;
var
  Match:TMatch;
  s:string;
  Encoding:TEncoding;
  ds:TDecompressionStream;
  ss:TStringStream;
begin
  Result.StatusCode:=Response.StatusCode;
  Result.StatusText:=Response.StatusText;
  Result.MimeType:=Response.MimeType;
  Result.Cookies:=Response.Cookies.ToArray;
  Result.Headers:=Response.Headers;
  Result.ContentCharSet:=Response.GetContentCharSet;
  //ShowMessage(Response.ContentLength.ToString);
  if (Response.ContentStream <> nil) and (Response.ContentStream.Size > 0) then
  begin
    if Response.ContentEncoding.ToLower = 'gzip' then
    begin
      ds:=TDecompressionStream.Create(Response.ContentStream);
      ss:=TStringStream.Create('',TEncoding.UTF8);
      try
        ss.CopyFrom(ds,ds.Size);
        Result.Text:=ss.DataString;
      finally
        ds.Free;
        ss.Free;
      end;
    end
    else
    begin
      Result.Text:=Response.ContentAsString(TEncoding.GetEncoding(Response.ContentCharSet));
    end;
  end;
end;
对流解压缩那里出错,请各位大神帮忙,谢谢!
----------------------------------------------
作者:
男 jopher3 (樵夫的马六甲) ▲▲▲▲▲ -
普通会员
2024/3/27 19:43:44
1楼: 用gzip算法解压
indy里有单元可以
----------------------------------------------
樵夫的大马甲
作者:
男 cenunus (cenunus) ★☆☆☆☆ -
普通会员
2024/3/27 20:43:28
2楼: jopher3
我知道,能演示一下吗?
----------------------------------------------
作者:
男 jopher3 (樵夫的马六甲) ▲▲▲▲▲ -
普通会员
2024/3/27 21:11:27
3楼: uses
   idZlib, IdZLibHeaders;

//
// GZIP流压缩...
procedure GZCompressStream(InStream: TMemoryStream; OutStream: TMemoryStream);
begin
   InStream.position:=0;
   CompressStream(InStream,OutStream,clFastest,zsGZip);
end;

//
// GZIP流解压...
procedure GZDecompressStream(InStream: TMemoryStream; OutStream: TMemoryStream);
begin
   InStream.position:=0;
   DecompressStream(InStream,OutStream);
end;
----------------------------------------------
樵夫的大马甲
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行54.6875毫秒 RSS