Delphi http получить контент - PullRequest
0 голосов
/ 20 января 2019

Я пытаюсь получить контент с веб-сайта (Jira rest api в https). На моем предприятии есть sso для подключения к этому сайту.

Когда я использую idHTTP для получения контента, я получаю HTTP 1.1 400.

Существует программное обеспечение, которое делает это на Java. Во-первых, нам нужно открыть сайт с помощью Chrome, поскольку он использует файл .cookies.db.

Мой первый код:

procedure TFMain.Button1Click(Sender: TObject);
var
  lHTTP: TIdHTTP;
  res: string;
begin
  lHTTP := TIdHTTP.Create;
  try
    res := lHTTP.Get(edApi.Text);
    Memo1.Lines.Add(res);
  finally
    lHTTP.Free;
  end;
end;

Мой второй код:

procedure TFMain.Button3Click(Sender: TObject);
var
   HTTP : TIDHTTP;
   Cookie : TidCookieManager;
   res: string;
begin
   try
      HTTP := TIDHTTP.Create(nil);
      Cookie := TidCookieManager.Create(nil);

      HTTP.Request.UserAgent := 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1';
      HTTP.Request.Accept := 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
      HTTP.Request.AcceptLanguage := 'en-us;q=0.7,en;q=0.3';
      HTTP.Request.AcceptCharSet := 'windows-1251,utf-8;q=0.7,*;q=0.7';
      HTTP.Request.Pragma := 'no-cache';
      HTTP.Request.CacheControl := 'no-cache';
      HTTP.Request.RawHeaders.Add('X-Requested-With: XMLHttpRequest');
      HTTP.AllowCookies := True;
      HTTP.HandleRedirects := True;
      HTTP.ProtocolVersion := pv1_1;
      HTTP.Request.Connection := 'Keep-Alive';
      HTTP.CookieManager  := Cookie;

      res := http.Get(edApi.Text);
      Memo1.Lines.Clear;
      Memo1.Lines.Add(res);
   finally
      FreeAndNil(Cookie);
      FreeAndNil(HTTP);
   end;
end;

Я действительно не знал, что делать сейчас .. спасибо

...