Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Problem mit idHTTP1.Get (passwortgeschützte Seite) (https://www.delphipraxis.net/96752-problem-mit-idhttp1-get-passwortgeschuetzte-seite.html)

SkyWalker07 30. Jul 2007 13:32


Problem mit idHTTP1.Get (passwortgeschützte Seite)
 
Hallo,
ich möchte mit idHTTP eine Datei mit reinem Textinhalt von einem Serverherunterladen. Auf dem Server sind mehrere Dateien, mit dem Format *5-stellige-Zahl*.sav (die 5-stellige-Zahl wird id genannt).
Das Programm, das ich schreibe, soll eine GET-Anweisung an ein PHP-Script schicken, wobei die id übergeben wird, sodass das PHP-Script weiß, von welcher Datei der Inhalt zurückgegeben werden soll.
Soweit, so gut. Das funktioniert auch noch.

Jetzt kommt aber mein Problem: das PHP-Script hat durch htaccess eingeschränkte Zugriffsrechte. Ruft man das PHP-Script über einen normalen Browser auf, erscheint die vom Browser standardmäßige Eingabeaufforderung des Benutzernamens und des Passwortes, um auf das Script zugreifen zukönnen.
Also muss das Programm auch den Benutzernamen und das Passwort übergeben.
Im Internet (ich glaube, das war sogar hier im Forum), habe ich folgendes gefunden, wie man das Problem lösen könnte:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var id : string;
begin
  id:=Edit1.Text;
  if (TryStrToInt(id)) and (Length(id)=5) then
    begin
      idHTTP1.Request.Username:='Benutzername';
      idHTTP1.Request.Password:='Passwort';
      try
        begin
          Memo1.Text:=idHTTP1.Get('http://www.***.de/update.php?id=' + id);
          MessageDlg('Die Daten wurden erfolgreich von dem Server heruntergeladen.', mtInformation, [mbOk], 0);
        end;
      except
        on E: Exception do
          MessageDlg('Es ist der folgende Fehler beim Herunterladen der Daten aufgetreten: ' + E.Message, mtError, [mbOk], 0);
      end;
    end;
end;
Und der Fehler, der auftritt ist: HTTP/1.1 401 Authorization Required
Mit anderen Worten, es wurden nicht die richtigen, oder keine Zugangsdaten angegeben.

Wo ist jetzt der Fehler in meinem Programm?
Ich hoffe ihr könnt mir helfen.
Danke schonmal!

MfG, Matthias

tr909 30. Jul 2007 13:38

Re: Problem mit idHTTP1.Get (passwortgeschützte Seite)
 
schreib doch username und password in die url.

Code:
http://username:password@http://www.webseite.tld
Gruß
tr909

mkinzler 30. Jul 2007 13:40

Re: Problem mit idHTTP1.Get (passwortgeschützte Seite)
 
Bist du sicher das die parameter per GET und nicht per POST erwartet werden?

SkyWalker07 30. Jul 2007 13:51

Re: Problem mit idHTTP1.Get (passwortgeschützte Seite)
 
Danke für deine Antwort!
Zitat:

Zitat von tr909
http://username:password@http://www.webseite.tld

Wenn ich das so mache, kommt bei dem Programm der Fehler "Authorization Required", wenn ich es direkt im Browser (IE)eingebe kommt "Datei nicht gefunden" (bei "http://username:password@http://www.webseite.tld" und "http://username:password@www.webseite.tld"), mit dem Firefox allerdings klappt es.

SkyWalker07 30. Jul 2007 13:57

Re: Problem mit idHTTP1.Get (passwortgeschützte Seite)
 
Zitat:

Zitat von mkinzler
Bist du sicher das die parameter per GET und nicht per POST erwartet werden?

Jaein.
Mit GET-Variablen haben wir (das machen ein Freund (er macht PHP) und ich (ich mach das Programm dazu)) auch gemacht, sodass alles in der URL übergeben wurde. ...update.php?user=Benutzer&pw=Passwort&id=12345
Doch es wird die gesamte Url mit geloggt, also auch Benutzername und Passwort.

Deshalb wollten wir es so machen.
Wie kann man denn noch die Parameter übergeben? Bei idHTTP1.Post(url, Strings) ist es klar. Doch das geht ja so nicht bei GET.

mkinzler 30. Jul 2007 14:03

Re: Problem mit idHTTP1.Get (passwortgeschützte Seite)
 
Dann ändere)oder dein freund) das Formular doch in POST

tr909 30. Jul 2007 14:07

Re: Problem mit idHTTP1.Get (passwortgeschützte Seite)
 
Füge hinter
Code:
idHTTP1.Request.Username:='Benutzername';
idHTTP1.Request.Password:='Passwort';
noch
Code:
idhttp1.Request.BasicAuthentication := true;
ein. Dann sollte es gehen.

Gruß
tr909

p.s.: Die Eingabe in Form von http://username:password@http://www.webseite.tld wurde von MS mal mit einem Security-Update rausgepatched ;) Aber mit dem FF geht es noch.

SkyWalker07 30. Jul 2007 14:10

Re: Problem mit idHTTP1.Get (passwortgeschützte Seite)
 
Genau das war es!
Danke tr909!!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:05 Uhr.

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