使用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;