在Delphi中,如果你想要TIdHTTP组件在遇到302重定向时不自动跳转,而是返回重定向的响应代码,你可以通过设置AllowCookies和HandleRedirects属性来实现。
设置AllowCookies为False可以防止自动处理Cookies,设置HandleRedirects为nil或者False可以阻止自动重定向。
以下是一个简单的代码示例:
var
IdHTTP: TIdHTTP;
Response: TStringStream;
URL: string;
begin
IdHTTP := TIdHTTP.Create(nil);
try
URL := 'http://www.naquan.com';
Response := TStringStream.Create;
try
IdHTTP.AllowCookies := False;
IdHTTP.HandleRedirects := False; // 或者设置为nil
IdHTTP.Get(URL, Response);
if IdHTTP.ResponseCode = 302 then
begin
ShowMessage('重定向发生,响应代码:' + IntToStr(IdHTTP.ResponseCode));
}
// 处理Response中的数据...
finally
Response.Free;
end;
finally
IdHTTP.Free;
end;
end;
在这个例子中,TIdHTTP在尝试访问URL时不会处理Cookies,也不会自动跟随重定向。如果发生了重定向,它会显示一个消息框,包含重定向的响应代码。如果需要获取重定向的目的地,可以检查Location头信息:
ShowMessage('重定向到: ' + IdHTTP.Response.Location);