您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> Delphi >> 用TIdHTTP控件抓取这个网址的数据时,出现乱码

用TIdHTTP控件抓取这个网址的数据时,出现乱码

来源:网络整理     时间:2016/8/30 2:18:00     关键词:

关于网友提出的“ 用TIdHTTP控件抓取这个网址的数据时,出现乱码”问题疑问,本网通过在网上对“ 用TIdHTTP控件抓取这个网址的数据时,出现乱码”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 用TIdHTTP控件抓取这个网址的数据时,出现乱码
描述:

为什么我用TIdHTTP控件抓取这个网址的数据时,出现乱码?而其他的一般的网址就可以?怎么改?先谢了! 
该地址如下: 
http://bill.finance.sina.com.cn/bill/trade_item.php?stock_code=sh580013&pages=0&time=1218809515' 
程序如下: 
unit Unit1; 
interface 
uses 
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
  Dialogs, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, 
  StdCtrls, ExtCtrls, WebAdapt, WebComp,WinINet, ComCtrls, OleCtrls, SHDocVw; 
type 
  TForm1 = class(TForm) 
    Panel1: TPanel; 
    Button1: TButton; 
    Memo1: TMemo; 
    procedure Button1Click(Sender: TObject); 
  private 
    { Private declarations } 
  public 
    { Public declarations } 
  end; 
var 
  Form1: TForm1; 
implementation 
{$R *.dfm} 
procedure TForm1.Button1Click(Sender: TObject); 
var 
      url:string; 
      IdHTTP:TIdHTTP; 
      stream:TMemoryStream;  
  begin 
      url:='http://bill.finance.sina.com.cn/bill/trade_item.php?stock_code=sh580013&pages=0&time=1218809515'; 
      IdHTTP:=TIdHTTP.Create(nil); 
      stream:=TMemoryStream.Create; 
        try 
              IdHTTP.get(url,stream); 
              stream.SaveToFile('c:\1.txt'); 
        finally 
            stream.Free;  
            IdHTTP.Free; 
        end; 
  end; 
end.


解决方案1:

呵呵,终于做出来了,有一定收获,
在算法上还是花了不少时间,
以前解gzip内容,现在是deflate,少了文件头内容,所以
用以前思路老是碰到"data error"问题。
用的是zLib控件:
(http://www.2ccc.com/article.asp?articleid=4269)
下面是可以运行的代码片断:
uses ZLibEx;
procedure TForm1.Button3Click(Sender: TObject);
var
    url: string;
    IdHTTP: TIdHTTP;
    stream, out_stream: TMemoryStream;
begin
    url := 'http://bill.finance.sina.com.cn/bill/trade_item.php?stock_code=sh580013&pages=0&time=1218809515';
    IdHTTP := TIdHTTP.Create(nil);
    stream := TMemoryStream.Create;
    out_stream := TMemoryStream.Create;
    try
        IdHTTP.get(url, stream);
        stream.Position:=0;
        ZLibEx.ZDecompressStream2(stream, out_stream, -15);
        stream.SaveToFile('c:\1.txt');
        out_stream.SaveToFile('c:\2.txt');  //这个就是我们要的html内容
    finally
        stream.Free;
        out_stream.Free;
        IdHTTP.Free;
    end;
end;


以上介绍了“ 用TIdHTTP控件抓取这个网址的数据时,出现乱码”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3667775.html

相关图片

相关文章