Idhttp.post 模拟向网页服务器提交信息

使用AspWebServer在本机架设Asp服务器有段时间,今天用得着了。Delphi网络编程,朕还是个菜鸟。。呵~`

 

在窗体中添加Idhttp控件,Indy Clients选项卡,左数第11个就是了。

 

procedure TForm1.ButtonClick(Sender: TObject);
  var
    IdHttp:TIdHTTP;
    PostDataStream:TStringStream;
    ParamData:TStringStream;
    ParamStr:TStringList;
    Html:string;
begin
  IdHttp := TIdHTTP.Create(nil);
{  IdHttp.ProtocolVersion := pv1_1;
  IdHttp.Request.Accept := 'application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/QVOD, application/QVOD, application/x-ms-application, application/x-ms-xbap, application/xaml+xml, */*';
  IdHttp.Request.AcceptEncoding := 'gzip, deflate';
  IdHttp.Request.AcceptLanguage := 'zh-cn';
  IdHttp.Request.CacheControl := 'no-cache';
  IdHttp.Request.Connection := 'Keep-Alive';
  IdHttp.Request.ContentLength := 35;
  IdHttp.Request.ContentType := 'application/x-www-form-urlencoded';
  IdHttp.Request.Host := '127.0.0.1';
  IdHttp.Request.Referer := 'http://127.0.0.1/';
  IdHttp.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET4.0E; .NET4.0C)'; } //使用红色括号包着的都不影响正常运行。只限于本测试学习,其它朕不知道。

 

==============网上抄的。  IdHttp.HandleRedirects := True; //这个不知道有什么用,照抄。-_-#!,有时候,加了就没有错误发生了。

 

什么是转向,意思应该是提交后跳到另一个页面吧。如果要跳到另一个页面,就要这行代码。

如果转向将 idhttp handleredirc设置为True

下面是获得转向地址:
procedure TForm1.IdHTTP1Redirect(Sender: TObject; var dest: String;
  var NumRedirect: Integer; var Handled: Boolean;
  var VMethod: TIdHTTPMethod);
var
url : string;
begin
  url := dest;
  Handled:=True;  
  showmessage(url);//转向地址
end;

 

==============网上抄的。
  PostDataStream := TStringStream.Create('');
  ParamData := TStringStream.Create('');
  ParamStr := TStringList.Create;
 // ParamData.WriteString('name=123&Submit=%E6%8F%90%E4%BA%A4'); //这样写是不行的。但是网上资料都是这样写。
  ParamStr.Add('name=1203');
  ParamStr.Add('Submit=%E6%8F%90%E4%BA%A4');
  IdHTTP.Post('http://127.0.0.1/reg.asp', ParamStr, PostDataStream); //第一个参数写错会提示404错误,表示网页不存在。例如把reg.asp改为rr.asp。

 

//Html := IdHTTP.Post('http://127.0.0.1/reg.asp', ParamStr); //也可以这样写,都是对的。
  postdatastream.Position:=0;
  memo1.Text:=Utf8ToAnsi(postdatastream.DataString); //不加Utf8ToAnsi这个的话,会返回乱码。
  PostDataStream.Free;
  ParamData.Free;
end;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值