Delphi 与Indy一起使用cookie
我正在尝试使用Indy组件从站点获取数据。(这在Delphi7中,但很乐意使用任何有效的工具。) 如果进入普通浏览器并输入以下路径: 它会让你在重定向到实际站点之前勾选一个免责声明。这创建了一个cookie,如果我在Firefox中看到它,它是这样的: 名称:ASP.NET_SessionId 内容:vm4l0w033cdng5mevz5bkzzq 路径:/ 发送请求:任何类型的连接 过期:在会话结束时 我无法使用编程完成免责声明部分,但我认为如果我手动签署免责声明,那么我可以将cookie的详细信息输入到我的代码中,并直接连接到数据页。我尝试用下面的代码来实现这一点,但它只返回免责声明页面的html,这意味着它没有使用我提供的cookie数据。我做错了什么Delphi 与Indy一起使用cookie,delphi,delphi-7,session-cookies,indy,Delphi,Delphi 7,Session Cookies,Indy,我正在尝试使用Indy组件从站点获取数据。(这在Delphi7中,但很乐意使用任何有效的工具。) 如果进入普通浏览器并输入以下路径: 它会让你在重定向到实际站点之前勾选一个免责声明。这创建了一个cookie,如果我在Firefox中看到它,它是这样的: 名称:ASP.NET_SessionId 内容:vm4l0w033cdng5mevz5bkzzq 路径:/ 发送请求:任何类型的连接 过期:在会话结束时 我无法使用编程完成免责声明部分,但我认为如果我手动签署免责声明,那么我可以将cookie的详
procedure TfmMain.GetWebpageData;
var
http: TIdHTTP;
cookie: TIdCookieManager;
sResponse: String;
begin
try
http := TIdHTTP.Create(nil);
http.AllowCookies := True;
http.HandleRedirects := True;
cookie := TIdCookieManager.Create(nil);
cookie.AddCookie('ASP.NET_SessionId=vm4l0w033cdng5mevz5bkzzq', 'inventory.data.xyz.com');
http.CookieManager := cookie;
sResponse := http.Get('http://inventory.data.xyz.com/provide_data.aspx?ID=41100&Mixed=no?fc=true&lang=en');
ShowMessage(sResponse); // returns text of disclaimer
except
end;
end;
由于您没有提供真正的URL,我只能推测,但您提供给
TIdCookieManager
的cookie值可能是错误的,或者在TIdHTTP.Get()
尝试使用它时已经过时,或者更可能的是TIdCookieManager.AddCookie()
完全拒绝了cookie(如果未触发TIdCookieManager.OnNewCookie
事件,则cookie不被接受)。好的,我找到了答案。我将项目移动到DelphiXE,一切正常。我使用的是Delphi 7和我读到的第一个Indy 10,其中一个基本上与cookie不兼容。当前版本按照tin上的说明执行。