Не работает авторизация Delphi TNetHTTPClient

#rest #delphi #authorization

#rest #delphi #авторизация

Вопрос:

У меня есть следующий код на C #, который работает, т.Е.. Я получаю ожидаемый результат от сервера.

 static async Task GetObjectInfo()
{
  HttpClient httpClient = new HttpClient(new HttpClientHandler()
  {
    Credentials = new NetworkCredential('USERNAME', 'PASSWORD')
  });
            
  string requestUrl = "http://<ipaddress>/rest/api/info/9C145D739F73";
  Console.WriteLine("Url: "   requestUrl);
  HttpResponseMessage response = await httpClient.GetAsync(requestUrl);
  if (response.IsSuccessStatusCode)
  {
    string aresult = await response.Content.ReadAsStringAsync();
    Console.WriteLine(aresult);
  }
  else
  {
    Console.WriteLine(response.StatusCode);
  }
}
  

Тем не менее, мне нужно сделать то же самое в Delphi (RAD Studio 10.3), но сервер всегда отвечает You do not have permission to view this directory or page.

Я использовал TNetHTTPClient

 AUrl := 'http://<ipaddress>/rest/api/info/9C145D739F73';
memResult.Lines.Text := NetHTTPClient1.Get(AUrl, nil).ContentAsString;
  

и в NetHTTPClient1AuthEvent том, что у меня есть

 procedure TForm1.NetHTTPClient1AuthEvent(const Sender: TObject;
  AnAuthTarget: TAuthTargetType; const ARealm, AURL: string; var AUserName,
  APassword: string; var AbortAuth: Boolean;
  var Persistence: TAuthPersistenceType);
begin
  if AnAuthTarget = TAuthTargetType.Server then
    begin
      AUserName := 'USERNAME';
      APassword := 'PASSWORD';
    end;
end;
  

Если я отлажу код, AnAuthTarget = TAuthTargetType.Server то будут установлены имя пользователя и пароль. Что я могу попробовать дальше?

Комментарии:

1. Какую ошибку вы получаете? Каково значение аргумента AbortAuth. Если значение false еще не установлено, установите для него значение false.

2. AbortAuth = False; Я не получаю код ошибки, ContentAsString показывает, что авторизация, похоже, завершилась с ошибкой.