详细解释一下问题: 1、我post一个网站的登录页,如:http://www.123.com/login.asp 2、成功后,它会返回一个http://www.123.com/index.asp给我。。 (如果我用ie提交并用监视软件看了一下,有2条记录,一条是post,一条是get的。但是如果我用idhttp的话,2条都是post) ie post http://www.123.com/login.asp get http://www.123.com/index.asp(自动返回的) idhttp post http://www.123.com/login.asp post http://www.123.com/index.asp(自动返回的,还是post,而且如果还有返回其它的信息都是post-_-!!) 这是什么原因泥?
procedure TForm1.BitBtn12Click(Sender: TObject); var postData:TStringList; begin postData:=TStringList.Create; postData.Add('username=test'); postData.Add('password=test11'); IdHTTP1.HandleRedirects:=true; IdHTTP1.Request.Referer:='http://www.95898.org'; IdHTTP1.Post('http://www.95898.org/checkLogin.asp?action=login',postData); end; 这样可以登录,但抓包看全是post 用IE登录一次post,一次get
1、我post一个网站的登录页,如:http://www.123.com/login.asp
2、成功后,它会返回一个http://www.123.com/index.asp给我。。
(如果我用ie提交并用监视软件看了一下,有2条记录,一条是post,一条是get的。但是如果我用idhttp的话,2条都是post)
ie
post http://www.123.com/login.asp
get http://www.123.com/index.asp(自动返回的)
idhttp
post http://www.123.com/login.asp
post http://www.123.com/index.asp(自动返回的,还是post,而且如果还有返回其它的信息都是post-_-!!)
这是什么原因泥?
var
postData:TStringList;
begin
postData:=TStringList.Create;
postData.Add('username=test');
postData.Add('password=test11');
IdHTTP1.HandleRedirects:=true;
IdHTTP1.Request.Referer:='http://www.95898.org';
IdHTTP1.Post('http://www.95898.org/checkLogin.asp?action=login',postData);
end;
这样可以登录,但抓包看全是post 用IE登录一次post,一次get
当你用Post的时候,idhtp会记录请求的方法类型
TIdHTTPMethod = (hmHead, hmGet, hmPost, hmOptions, hmTrace, hmPut, hmDelete, hmConnect);
idhtp检测到有转向的时候,如果你没有定义自己的转向处理事件
它就会调用默认的转向方法,自然是用记录的方法类型来执行
如果你想自己处理,可以在
OnRedirect事件里来处理
具体可以看看idhttp的代码
wintergoes 兄说的有道理,小弟感谢,奉上50分