веб-сервис с аутентификацией всегда выдает сообщение Требуется аутентификация - PullRequest
4 голосов
/ 16 декабря 2010

Я пытаюсь использовать один веб-сервис с Delphi 2010. Этот веб-сервис находится на порту 8000 с аутентификацией.

Я реализую

function TForm4.EncodeLoginPW(const ALogin, APW: string): string;
begin
  Result := EncdDecd.EncodeString(ALogin + ':' + APW); // EncdDecd is not documented in 
end;


procedure TForm4.HTTPRIO1HTTPWebNode1BeforePost(const HTTPReqResp: THTTPReqResp;
  Data: Pointer);
var
  s: string;
begin
  s := 'Authorization: Basic ' + EncodeLoginPW(UserName, Password);
  if not HttpAddRequestHeaders(Data, PChar(s), Length(s), HTTP_ADDREQ_FLAG_ADD) then
    ShowMessage('HttpAddRequestHeaders' + SysErrorMessage(GetLastError()));
end;

но у меня все еще есть сообщение "Требуется аутентификация".

Я что-то не так делаю?

Ответы [ 2 ]

2 голосов
/ 16 декабря 2010

Для базовой аутентификации это должно работать:

Базовая аутентификация в Delphi 7 SOAP

Как объяснено в этом посте , более новые версии Delphiтакже позволяют использовать

HTTPRio.HTTPWebNode.UserName := Username;
HTTPRio.HTTPWebNode.Password := Password;
0 голосов
/ 19 декабря 2010

Если это все еще не работает, вы можете попробовать другой клиент (.Net или Java) и сравнить HTTP-трафик с помощью локального прокси ( Fiddler или Proxy Дон ) или анализатор (WireShark), чтобы найти соответствующие различия.

...