Search code examples
delphidelphi-2010indyidhttp

IdHTTP basic authentication access violation


I'm trying to do a HTTP Authentication with Indy HTTP class. But for some unknown reason I'm getting an Access Violation error in this line: IdHTTP1.Request.Authentication.Username := Username;

The code stretch is:

  IdHTTP1:= TIdHttp.Create(Application);
  IdHTTP1.ConnectTimeout:= 10000;
  IdHTTP1.Request.Clear;
  IdHTTP1.Request.BasicAuthentication:= true;
  IdHTTP1.Request.Authentication.Username := Username;
  IdHTTP1.Request.Authentication.Password := Password;
      try
        IdHTTP1.Get(PbxURL);
        HttpCode := IdHTTP1.ResponseCode;
      except
        on E: EIdHTTPProtocolException do
          HttpCode := IdHTTP1.ResponseCode;

I'm using Delphi 2010, and already tried to do something like: IdHTTP1.Request.Authentication.Username := 'admin'; but didn't solved the problem...


Solution

  • From a quick check, it appears that there is no IdHTTP.Request.Authentication needed (and therefore none is created) when the Request.BasicAuthentication is true. You should be using Request.UserName and Request.Password instead.

    IdHTTP1:= TIdHttp.Create(Application);
    IdHTTP1.ConnectTimeout:= 10000;
    IdHTTP1.Request.Clear;
    IdHTTP1.Request.BasicAuthentication:= true;
    IdHTTP1.Request.UserName := UserName;
    IdHTTP1.Request.Password := Password;