我試圖從使用Indy組件的網站獲取數據。 (這是在Delphi 7,但樂於使用任何工作的。)與Indy一起使用Cookie
如果你進入一個正常的瀏覽器,並把路徑: http://inventory.data.xyz.com/provide_data.aspx?ID=41100&Mixed=no?fc=true&lang=en 它讓你重定向你到現場前打勾免責聲明。這將創建一個cookie,而如果我看它在Firefox中是這樣的: http://inventory.data.xyz.com 名稱:ASP.NET_SessionId 內容:vm4l0w033cdng5mevz5bkzzq 路徑:/ 發送:任何類型的連接 的到期:在會議
結束我無法通過使用編程獲取免責聲明部分,但我想如果手動簽署免責聲明,我可以將cookie的詳細信息輸入到我的代碼中並直接連接到數據頁面。我試圖用下面的代碼來做到這一點,但它只返回免責聲明頁面的html,這往往暗示它不使用我給出的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;
好的,我找到了答案。我將該項目移至DelphiXE,並且一切正常。我使用的是Delphi 7,我讀過的第一個Indy 10中的一個基本上不支持cookie。這個最新版本就是在錫上說的。 – user1358639