Проблемы с авторизацией после обновления с Delphi 2005 до 2010 с использованием Indy http (idHTTP1.Get) - PullRequest
3 голосов
/ 18 июля 2011

Я обновляюсь с Delphi 2005 до Delphi 2010. У меня такая проблема: следующая процедура хорошо работает на D2005, но на D2010 я всегда получаю результат:

<HTML><HEAD><TITLE>401 Unauthorized</TITLE></HEAD>
<BODY><H1>401 Unauthorized</H1>
Your client does not have permission to get URL /axis-cgi/date.cgi from this server.
</BODY></HTML>

На процедуре я пытаюсь подключиться дважды, потому что на D2005 иногда я получаю Несанкционированный ответ с первой попытки, а затем я могу подключиться во второй раз без проблем. С D2010 я всегда получаю Несанкционированный ответ.

URL = 'http://user:pass@xxx.xxx.xxx.xxx/axis-cgi/date.cgi?action=get'

function TViewCameraForm.HttpGet(idHTTP : TidHTTP; Url : AnsiString): AnsiString;
Var
  Res : AnsiString;
Begin
  idHTTP1.Disconnect;
  try
    Res := idHTTP1.Get(Url);
    If Pos('Unauthorized', Res) > 0 Then
        Res := idHTTP1.Get(Url);
    Result := Res;
  except
    on E: EIdHTTPProtocolException do begin
        Result := E.ErrorMessage
    end;
    on E: Exception do begin
        Result := E.message;
    end;
  end;

End;    

Спасибо Sam

1 Ответ

6 голосов
/ 18 июля 2011

Вы пытались пройти аутентификацию с использованием Basic Auth?

  ...
  idHTTP1.Request.BasicAuthentication := True;
  idHTTP1.Request.Username := 'user';
  idHTTP1.Request.Password := 'pass';
  Res := idHTTP1.Get(Url);

(используя user: pass @ website не соответствует спецификации HTTP, кстати)

...