实际上,GET还可以用在其它方面,前提是与你的
网页文件挂钩.例如,你的个人站点放在你的硬盘上面,你在http://my.yeah.net申请了一个免费的域名,你将URL指向你的IP.但是你的IP是动态的,经常会改变,每次改变后需要手工打开
http://my.yeah.net/站点进行设置是非常麻烦的.这时候,你可以自己动手写一个
程序.
首先,我们来写两个函数从返回页面里提取我们需要的信息.
function GetInfoByYearNetHtm1(const str:string):String; { 功能:从Yeah.Net的域名申请和修改返回网页文件中提取需要的信息 参数:Yeah.Net的网页文件内容 输出:实际的信息 作者:陈经韬 日期:2003,2,8 修改:无 } const SubColor='<font color=red>'; SubCenter1='<center>'; SubCenter2='</center>'; var S:String; i,j,k:integer; begin Result:=''; S:=str;
j:=0; repeat i:=Pos(SubColor,LowerCase(S)); if i=0 then break; if Length(s)<(i+Length(SubColor)-1) then Break; Delete(S,1,i+Length(SubColor)-1);
i:=Pos(SubCenter1,LowerCase(S)); if i=0 then break else if i<=10 then j:=-1; until j=-1;
k:=Pos(SubCenter2,LowerCase(S)); S:=Copy(S,i+Length(SubCenter1),k-i-Length(SubCenter1));
k:=0; repeat i:=pos('<',s); j:=pos('>',s); if (i=0) or (j=0) then Break; Delete(s,i,j-i+1); Insert(' ', S, i); until k=-1; s:=s+'.'; Result:=s; end;
function GetInfoByYearNetHtm2(const Str:String):String; { 功能:从Yeah.Net的域名转向返回网页文件中提取需要的信息 参数:Yeah.Net的网页文件内容 输出:实际的信息 作者:陈经韬 日期:2003,2,8 修改:无 } var i,j,k:integer; begin Result:=''; i:=Pos('url=',Str); if i=0 then Exit; i:=i+4; j:=Pos('',Str); if i=0 then Exit; j:=j-2; k:=j-i; Result:=copy(Str,i,k); end; |
第一步,我们先来实现注册功能.放上五个Edit控件分别代表注册用户名称,密码1,密码2,Email地址和需要指向的URL.然后用GET方式来注册:
procedure TForm1.Button1Click(Sender: TObject); var StrRecive:String; begin Memo1.Lines.Clear; Memo1.Lines.Add('正在申请域名!'); try StrRecive:=IdHTTP1.Get('http://my.yeah.net/cgi-bin/register?username='+Edit1.Text//注册名称 +'&domain=yeah.net' +'&password='+Edit2.Text//密码1 +'&password2='+Edit3.Text//密码2 +'&email='+Edit4.Text//注册人Email地址 +'&url=http://'+Edit4.Text);//该域名指向的URL Memo1.Lines.Add(GetInfoByYearNetHtm1(StrRecive)); except Memo1.Lines.Add('申请域名错误!请检查网络!'); end; end; |
第二步,当你需要更新自己的IP地址的时候:
procedure TForm1.Button2Click(Sender: TObject); var StrRecive:String; begin Memo1.Lines.Clear; Memo1.Lines.Add('正在更新域名!'); try StrRecive:=IdHTTP1.Get('http://my.yeah.net/cgi-bin/modify?username='+Edit1.Text//注册名称 +'&domain=yeah.net' +'&password='+Edit2.Text//密码1 +'&url=http://'+Edit4.Text);//该域名指向的URL Memo1.Lines.Add(GetInfoByYearNetHtm1(StrRecive)); except Memo1.Lines.Add('更新IP错误!请检查网络!'); end; end; |
第三步:当然是你的程序取的真实指向了:)
procedure TForm1.Button3Click(Sender: TObject); begin try Memo1.Lines.Add(GetInfoByYearNetHtm2(IdHTTP1.Get(Edit4.Text)));//eg:http://lovejingtao.yeah.net except Memo1.Lines.Add('更新IP错误!请检查网络!'); end; end; |