1

Indy コンポーネントを使用してサイトからデータを取得しようとしています。(これは Delphi 7 のものですが、動作するものは何でも喜んで使用します。)

通常のブラウザにアクセスして次のパスを入力 すると、次のようにリダイレクト されます。実際のサイト。これにより、Cookie が作成されます 。Firefoxで見ると、次のようになります: http://inventory.data.xyz.comセッションの

プログラミングを使用して免責事項の部分を通過することはできませんが、免責事項に手動で署名すると、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;
4

1 に答える 1

2

実際の URL を提供していないため、推測することしかできませんが、提供している Cookie の値TIdCookieManagerが間違っているかTIdHTTP.Get()、それを使用しようとするまでに古くなっている可能性があります。またはTIdCookieManager.AddCookie()、Cookie を完全に拒否している可能性があります (TIdCookieManager.OnNewCookieイベントががトリガーされない場合、Cookie は受け入れられませんでした)。

于 2012-07-01T02:44:23.377 に答える