AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Anmelden an Webmodul über IdHTTP
Thema durchsuchen
Ansicht
Themen-Optionen

Anmelden an Webmodul über IdHTTP

Ein Thema von fwn · begonnen am 8. Apr 2013 · letzter Beitrag vom 11. Apr 2013
 
Thom

Registriert seit: 19. Mai 2006
570 Beiträge
 
Delphi XE3 Professional
 
#10

AW: Anmelden an Webmodul über IdHTTP

  Alt 9. Apr 2013, 19:41
Hallo nahpets,

ich hatte gerade noch etwas den Quelltext überarbeitet:

Server:
Delphi-Quellcode:
procedure TWebModule1.WebModule1TestAction(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
  N: Integer;
  S: String;
begin
  S := String(Request.Authorization);
  N := Pos(' ',S);
  if N > 0 then
  begin
    Delete(S,1,N);
    S := TIdDecoderMIME.DecodeString(s);
    N := Pos(':',S);
    if N > 0 then
    begin
      Response.Content:=Format('Username: %s<br>Password: %s',[Copy(S,1,N-1),Copy(S,N+1,Length(S)-N+1)]);
      Exit;
    end;
  end;
  Response.WWWAuthenticate := 'Basic';
  Response.StatusCode := 401;
end;
Klient:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  HTTP: TIdHTTP;
begin
  HTTP := TIdHTTP.Create;
  try
    HTTP.Request.BasicAuthentication := True;
    HTTP.HandleRedirects := True;
    HTTP.Request.Username := Edit1.Text;
    HTTP.Request.Password := Edit2.Text;
    Memo1.Lines.Text := StringReplace(HTTP.Get('http://maps4delphi.com/test'),'<br>',sLineBreak,[rfReplaceAll]);
  finally
    HTTP.Free;
  end;
end;
Damit reagiert der Server auch auf Browseranfragen (getestet mit IE9, IE10, Firefox und Google Chrome). Hier erscheint dann wegen des Statuscodes 401 der Eingabedialog für Name und Passwort.
Da ich den Zeilenumbruch in ein "<br>"-Tag umgewandelt habe, wird die Serverantwort auch korrekt im Browser angezeigt. Für die Anzeige im Delphi-Programm wird der Zeilenumbruch durch StringReplace umgewandelt.

Die Übergabe per "Name:Passwort@xyz" funktioniert nicht.

Unter Delphi 7 könnte es eventuell noch Probleme mit der Eigenschaft Request.Authorization geben. Das kann ich momentan leider nicht testen. Du könntest aber mal versuchen, diesen Wert direkt abzufragen:
Request.GetFieldByName('Authorization');

P.S.:
Das Ganze funktioniert natürlich auch über HTTPS (wegen Basic-Authentifikation = unsicher):
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  HTTP: TIdHTTP;
  SSL: TIdSSLIOHandlerSocketOpenSSL;
begin
  HTTP := TIdHTTP.Create;
  try
    SSL := TIdSSLIOHandlerSocketOpenSSL.Create;
    try
      HTTP.IOHandler := SSL;
      HTTP.Request.BasicAuthentication := True;
      HTTP.HandleRedirects := True;
      HTTP.Request.Username := Edit1.Text;
      HTTP.Request.Password := Edit2.Text;
      Memo1.Lines.Text := StringReplace(HTTP.Get('https://maps4delphi.com/test'),'<br>',sLineBreak,[rfReplaceAll]);
    finally
      SSL.Free;
    end;
  finally
    HTTP.Free;
  end;
end;
Thomas Nitzschke
Google Maps mit Delphi

Geändert von Thom ( 9. Apr 2013 um 20:19 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:25 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