Autor Beitrag
Shyran
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20


Rad Studio XE
BeitragVerfasst: Mi 14.09.11 11:04 
Hallo ihr Hilfswilligen,

nachdem ich mein Ping Problem mit eurer Hilfe lösen konnte, stoße ich auf eine weitere Schwierigkeit. Meine Datensammler verlangen ihrerseits eine Anmeldung, wenn ich das Webinterface nutze. Ich möchte gerne den Quelltext einer generierten HTML Datei meines Sammlers in einen String bekommen, um den weiterzuverarbeiten. Username & Passwort sind mir natürlicb bekannt und folgenden Code nutze ich dafür derzeit:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
  IdHTTP1.Request.Host:= '192.168.0.100';
  IdHTTP1.Request.Username:= 'username';
  IdHTTP1.Request.Password:= 'pw';
  IdHTTP1.Request.BasicAuthentication:=True;
  S:=IdHTTP1.Get('http://192.168.0.100/cgi-bin/meterlist');


Also totaler Standard und nix weltbewegendes, aber ich bekomme die Fehlermeldung übergeben:

"HTTP/1.0 401 Unauthorized."

Ich habe aus Unwissenheit auch mal mit der "ProtocolVersion" herumprobiert (pv1_0/pv1_1), brachte aber nix. Nach ein wenig Google'n stieß ich auf diesen Hinweis im Embarcadero Forum. Der Austausch zur simplen URL "http://config:123456@blabla" brachte wie erwartet kein anderes Ergebnis.

Habt ihr noch eine Idee? Mir erscheint das Problem als zu banal irgendwie ...

Liebe Grüße,

-Shyran

PS: Natürlich funktioniert der Aufruf in diversen Browsern (IE/Firefox/Chrome) problemlos und ich werde via Popup nach Username/Passwort gefragt. Dies nur als Hinweis, um den Fehler seitens der Sammlers auszuschließen.
Andreas L.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: Mi 14.09.11 11:14 
Folgenden Code verwende ich in einen aktuellen Projekt und es funktioniert problemlos. Gehts wenn du das setzen der Host-Eigenschaft auskommentierst?

ausblenden Delphi-Quelltext
1:
2:
3:
4:
    Result.Request.BasicAuthentication := True;
    Result.Request.Username := FUsername;
    Result.Request.Password := FPassword;
    Result.HandleRedirects := True;
Shyran Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20


Rad Studio XE
BeitragVerfasst: Mi 14.09.11 11:20 
Habe ich direkt mal ausprobiert (Und auch in den Standard Eigenschaften die Einträge herausgenommen, die ich da mal hineingeschrieben hatte) und es wie vorgeschlagen mit folgendem Code nun:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
//  IdHTTP1.Request.Host:= '192.168.0.100';
  IdHTTP1.Request.Username:= 'config';
  IdHTTP1.Request.Password:= '123456';
  IdHTTP1.Request.BasicAuthentication:=True;
  IdHTTP1.HandleRedirects:=True;
  S:=IdHTTP1.Get('http://192.168.0.100/cgi-bin/meterlist');


...leider aber mit exakt dem gleichen Ergebnis.
Andreas L.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: Mi 14.09.11 11:29 
Handelt es sich bei der Benutzer und Passwort Abfrage auch sicher um eine serverseitige Sicherung (.htaccess, ...)? Wenn die Abfrage von einem JavaScript generiert wird, kannst du dich mit der Indy-Komponente natürlich nicht einloggen.

Hast du schon versucht den Login in einem neuen, leeren Projekt durchzuführen? Vllt. ist an der HTTP-Komponente noch irgendwas verstellt das Probleme macht.
Shyran Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20


Rad Studio XE
BeitragVerfasst: Mi 14.09.11 11:33 
Die erste Frage kann ich nicht mit Sicherheit beantworten leider. Ich werde dazu mal den Hersteller befragen und hier ein Feedback geben. Meines Wissens nach läuft dort ein embedded Linux, ich hätte also eine Varation eines Apachen erwartet. Aber das bekomme ich sicher noch heraus.

Hätte ich noch eine andere Möglichkeit herauszufinden, von welcher Art die Passwortabfrage ist?

nach der Mittagspause schnappe ich mir mal ein leeres Projekt und versuche es dort, ohne irgendwelche Basteleien vorzunehmen, die Idee ist nicht schlecht.

Bisweilen aber schonmal herzlichen Dank!

PS: Ein "WGET" Befehl funktioniert hier aber tadellos, fällt mir gerade siedendheiß ein. Und das hat ja nun auch mal gar nix Javascript am Hut:
wget "http://192.168.1.100/cgi-bin/readraw?TYPE=METER&RAWFORMAT=Binary&ADDR=83000058&MFCT=MEH&MEDIUM=8" --http-user=config --http-password=123456 liefert mir eine entsprechenden kleinen Eintrag, der dort ebenfalls vorhanden ist.

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

So, ich habe Deinem Vorschlag folgend nochmal ein neues Projekt eröffnet und wenig später einfach eine neue IdHTTP Komponente erzeugt und genutzt. Das neue Projekt "tut gar nix", um es salop auszudrücken. Um zu testen, ob vlt. der Login klappte aber im späteren Verlauf etwas doof sei, hab ich auch mal bewusst ein falsches PW gesetzt - ebenfalls passierte auf Knopfdruck dann nichts.

Insofern war ich vorher mit der Authentifizierungsmeldung schon etwas weiter, nun gilt es nur noch herauszufinden, wieso der 401er dort kommt und ich wie ich ihn ausmerze.

*ratlos schau*
Andreas L.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: Do 15.09.11 07:46 
Evtl. überprüft die Seite den UserAgent und lässt nur welche mit bestimmten Merkmalen zu. Du könntest versuchen den UserAgent auf z. B. den von Firefox oder Internet Explorer zu ändern. Außerdem könntest du noch einen CookieManager der Komponente zuweisen.

Ansonsten fällt mir nur noch ein mal ein Update der Indy-Komponenten zu machen: www.indyproject.org/...Files/Indy10.DE.aspx
Shyran Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20


Rad Studio XE
BeitragVerfasst: Do 15.09.11 14:43 
Danke für den Hinweis - ich denke, am Montag werde ich wieder die Zeit finden und an dem problem weiterarbeiten. Bis dahin Danke für die Hilfe!