Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   FreePascal (https://www.delphipraxis.net/74-freepascal/)
-   -   lNet HTTP Client Authentifizierung (https://www.delphipraxis.net/155152-lnet-http-client-authentifizierung.html)

divBy0 11. Okt 2010 12:13

lNet HTTP Client Authentifizierung
 
Hallo zusammen,

ich habe gerade ein Problem mit der lNet HTTPClientComponent unter Lazarus. Die Zielplattform ist WinCE.

Es soll ein Bild von einem Webserver mit Authentifizierung geladen werden, allerdings scheint der HTTPClient von lNet keine Authentifizierung zu unterstützen oder ich habe es einfach übersehen bis jetzt.

Gibt es evtl. Alternativen für den HTTP-Client (muss aber WinCE unterstützen)?

divBy0 13. Okt 2010 09:06

AW: lNet HTTP Client Authentifizierung
 
Bis jetzt habe ich noch keine Lösung zur Authentifizierung mit lNet gefunden. Bei der aktuellen Anwendung wird das eigentlich auch nicht gebraucht, ich konnte die Authentifizierung am Server (IP-Cam) abschalten.

JamesTKirk 30. Okt 2010 13:37

AW: lNet HTTP Client Authentifizierung
 
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

divBy0 30. Okt 2010 21:30

AW: lNet HTTP Client Authentifizierung
 
Hey,

danke für den Beispiel-Code! Habe gerade kein MP277 zum Testen griffbereit, werde es aber bei Gelegenheit versuchen. :thumb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:12 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz