Einzelnen Beitrag anzeigen

Benutzerbild von JamesTKirk
JamesTKirk

Registriert seit: 9. Sep 2004
Ort: München
604 Beiträge
 
FreePascal / Lazarus
 
#3

AW: lNet HTTP Client Authentifizierung

  Alt 30. Okt 2010, 14:37
Hi!

Ist jetzt zwar schon ein paar Tage her und ich weiß auch nicht, ob das genau das ist was du brauchst, aber in einer (mittlerweile schon älteren) Windows Mobile Anwendung von mir hab ich das folgendermaßen gelöst:

Delphi-Quellcode:
uses
  base64;

function TFormMain.GetAuthorization(const aName, aPassword: String): String;
var
  sStream: TStringStream;
  base64enc: TBase64EncodingStream;
  i: Integer;
begin
  { da ich Base64 Kodierung verwende, müssen Benutzername und Passwort natürlich noch
    entsprechend kodiert werden }

  if (aName <> '') and (aPassword <> '') then begin
    Result := aName + ':' + aPassword;

    sStream := TStringStream.Create('');
    try
      base64enc := TBase64EncodingStream.Create(sStream);
      try
        for i := 1 to Length(Result) do
          base64enc.Write(Result[i], SizeOf(Char));
      finally
        FreeAndNIL(base64enc);
      end;

      sStream.Seek(0, soFromBeginning);

      Result := sStream.ReadString(sStream.Size);
    finally
      FreeAndNIL(sStream);
    end;
  end else
    Result := '';
end;

procedure TFormMain.DownloadData(const aFile: String);
var
  AuthString: String;
begin
  AuthString := GetAuthorization(Options.Name, Options.Password);

  { da lNet Authentifizierung nicht als Eigenschaft hat, muss diese manuell
    angegeben werden. Hier hilft es sich über das HTTP Protokoll zu informieren }

  if AuthString <> 'then
    HTTPClient.AddExtraHeader('Authorization: Basic ' + AuthString);

  { andere Eigenschaften des HTTPClient setzen }

  HTTPClient.SendRequest;
end;
Gruß,
Sven
Sven
[Free Pascal Compiler Entwickler]
this post is printed on 100% recycled electrons
  Mit Zitat antworten Zitat