html网页怎么获取http链接,专业方法idhttp取得网页的HTML源码

作用是取得网页的HTML源码,使用idHttp控件。

将获取的过程写在线程里,不再主线程内运行,是防止界面的无响应现象。idAntiFree控件虽然可以做到,但是效果不明显。很多时候线程里不可能做太多的事情,可能用来通用化,而且线程之间的通信还是比较麻烦,用消息的方法虽然简单,但是如果我用来接受消息的类是不可视的话,使用AllocateHWnd函数来建立消息句柄将占用资源,所以这个时候使用回调函数是比较折中的办法,虽然不太符合OO设计^_^.

下面是代码(WinXP SP2 + D2006测试通过)...

unit MainFrm;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, IdHTTP;

type

TCallBack = procedure(Html: string) of object;

type

TForm1 = class(TForm)

mmo1: TMemo;

btn1: TButton;

edt1: TEdit;

procedure btn1Click(Sender: TObject);

private

procedure myCallBack(Html: string);

{ Private declarations }

public

{ Public declarations }

end;

THtmlThreade = class(TThread)

private

FHttp: TIdHTTP;

FUrl: string;

myCallBack: TCallBack;

protected

procedure Execute; override;

public

constructor Create(aUrl: string; CallBack: TCallBack);

destructor Destroy; override;

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.myCallBack(Html: string);

begin

mmo1.Text := Html;

end;

{ THtmlThreade }

procedure THtmlThreade.Execute;

begin

myCallBack(FHttp.Get(FUrl));

end;

constructor THtmlThreade.Create(aUrl: string; CallBack: TCallBack);

begin

inherited Create(True);

FUrl := aUrl;

myCallBack := CallBack;

FHttp := TIdHTTP.Create(nil);

FreeOnTerminate := True;

end;

destructor THtmlThreade.Destroy;

begin

FHttp.Free;

inherited Destroy;

end;

procedure TForm1.btn1Click(Sender: TObject);

var

mythread: THtmlThreade;

begin

mythread := THtmlThreade.Create(edt1.Text, myCallBack);

mythread.Resume;

end;

end.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值