Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi IdHTTP.Get - und kein Inhalt geliefert. (https://www.delphipraxis.net/106564-idhttp-get-und-kein-inhalt-geliefert.html)

wro 12. Jan 2008 20:23


IdHTTP.Get - und kein Inhalt geliefert.
 
Also ich kann nicht mehr. Sorry, dass ich meine Noob Frage doch posten muss, aber ich finde echt nicht die Quelle des Problems.

Ich versuche eine .csv Datei ineinen String einzulesen mit IdHTTP.Get, bekomme aber keine Daten. Die Indy version war vorhin 9, ich habe nun auf 10.1.5 aktualisiert - aber nicht geholfen.

Die URL ist korrekt - über einen Browser bekomme ich die Datei. Wenn ich das Ganze als eine Datei auf der Festplatte abzulegen versuche, bekomme ich auch keinen Inhalt (leere Datei). Mein Quellcode wäre:

Delphi-Quellcode:
try
    Label1.Caption:= IdHTTP1.Get('http://fritz.box/cgi-bin/webcm?getpage=../html/de/FRITZ!Box_Anrufliste.csv');
     
    except
      on E: Exception do AError := E.Message;
Und Capton ändert sich, aber in einen leeren String. Wenn ich die Datei aber manuell per Browser downloade, dann ist da Inhalt drin...

Ideen? Wahrscheinlich hab ich da einfach was übersehen, aber anscheinend bin ich da zu blöd um alleine drauf zu kommen.

Gruß

Nuclear-Ping 12. Jan 2008 20:25

Re: IdHTTP.Get - und kein Inhalt geliefert.
 
Deine Fritz-Box wird wahrscheinlich einen Browser-Login haben, daran könnte es scheitern.

Versuch mal http://user:pw@fritz.box/...

wro 12. Jan 2008 20:35

Re: IdHTTP.Get - und kein Inhalt geliefert.
 
Also das mit dem login das klappt nicht. Und ich habe die Login-PW Sache extra ausgeschaltet zum testen...

WordWrap ist aktiv, ausserdem habe ich es auch schon mit einer Memo probiert. Er liefert irgendwie einen leeren String. Den Wert habe ich mir nicht angeschaut, weil ich icht weiß, wie (peinlich, peinlich).

SirThornberry 12. Jan 2008 20:36

Re: IdHTTP.Get - und kein Inhalt geliefert.
 
ich hatte nicht bis zu ende gelesen. Wenn selbst in einer Datei dann nichts steht wird wohl wirklich nichts zurückgeliefert oder geht mittendrin irgendwo verloren.

wro 12. Jan 2008 20:42

Re: IdHTTP.Get - und kein Inhalt geliefert.
 
mittendrin ist gut - wo denn, wenn ichs direkt nach dem Auslesen zuweise?
eher schon, dass nichts zurückgeliefert wird... nur was können die Ursachen sein? Der Link ist ja ok, ausserdem habe ich das auch mit einer test.txt -Datei auf dem Server versucht. Das ging auch nicht, also auch ein leerer String(?)

Und ganz am Rande: recht vielen Dank für die superschnellen Antworten.

Nuclear-Ping 13. Jan 2008 00:31

Re: IdHTTP.Get - und kein Inhalt geliefert.
 
Zitat:

Zitat von wro
Der Link ist ja ok, ausserdem habe ich das auch mit einer test.txt -Datei auf dem Server versucht. Das ging auch nicht, also auch ein leerer String(?)

Wie mit einer "test.txt auf dem Server ..."? Du hast auf die FritzBox 'ne Test.txt geladen oder auf einen X-beliebigen Server?

Wenn du letzteres gemacht hast und das schon nicht geht, hast du irgendwo anders ein Problem.

Falls das geht, wird das bei deiner FritzBox entweder an irgendwelchen Cookies scheitern oder an irgend'ner Authentifizierung.

DeddyH 13. Jan 2008 00:43

Re: IdHTTP.Get - und kein Inhalt geliefert.
 
Übrigens ist das ein Frameset. Wenn man sich den betreffenden Frame mal ansieht, bemerkt man, das es sich um ein "POST"-Formular handelt.

[edit] Wozu eigentlich die Anrufliste per Programm speichern? Bei mir sind das 2 Mausklicks :| [/edit]

wro 13. Jan 2008 01:02

Re: IdHTTP.Get - und kein Inhalt geliefert.
 
Ok, ich bin da irgendwie weitergekommen... also ich weiß immer noch nicht, was der Fehler war, aber ich hab mich entschieden, das Ganze dynamisch auf der Form zu platzieren und dann ging es...
aber nur halb, weil:

Delphi-Quellcode:
begin
     HTTP := TIdHttp.Create(nil);

  try
    with HTTP do
    begin
      HandleRedirects := true;
      Request.ContentLength := -1;
      Request.Accept := 'text/html, */*';
      HTTPOptions := [hoForceEncodeParams];
    end;
    Memo1.Text:=HTTP.Get('http://fritz.box/cgi-bin/webcm?getpage=../html/de/FRITZ!Box_Anrufliste.csv');
    except E: Exception do AError := E.Message;
    end;
end;
Gibt mir den Error:
"Invalid argument to date encode"

Wenn ich den Link jedoch manuell in den Browser eingebe, die Datei herunterlade, sie auf einen Webserver platziere und dann abrufe:

Delphi-Quellcode:
begin
     HTTP := TIdHttp.Create(nil);

  try
    with HTTP do
    begin
      HandleRedirects := true;
      Request.ContentLength := -1;
      Request.Accept := 'text/html, */*';
      HTTPOptions := [hoForceEncodeParams];
    end;
    Memo1.Text:=HTTP.Get('http://www.drobiarnia.com/a.csv');
    except E: Exception do AError := E.Message;
    end;
end;
dann liefert er mir den korrekten Inhalt.

Bin ich nun weiter, oder nicht? Und warum habe ich diesen Fehler?

Nuclear-Ping 13. Jan 2008 01:11

Re: IdHTTP.Get - und kein Inhalt geliefert.
 
Funzt das?
Delphi-Quellcode:
Memo1.Text:=HTTP.Get('http://fritz.box/html/de/FRITZ!Box_Anrufliste.csv');

wro 13. Jan 2008 01:12

Re: IdHTTP.Get - und kein Inhalt geliefert.
 
Ja. Bin überglücklich, danke schön. Kurze Erklärung, warum das funktioniert? Aber auch so vielen, vielen Dank...

Nuclear-Ping 13. Jan 2008 01:22

Re: IdHTTP.Get - und kein Inhalt geliefert.
 
Freut mich. Da hat die Vermutung gestimmt. :mrgreen:

http://fritz.box/cgi-bin/webcm?getpage=../html/de/FRITZ!Box_Anrufliste.csv scheint ein Script zu sein, was http://fritz.box//html/de/FRITZ!Box_Anrufliste.csv aufruft.

Das Script prüft wahrscheinlich irgendwas, was dein Browser kann und dein Programm halt nicht. Deswegen funzt das im Browser und bei dir nicht. Wenn du die Datei aber direkt anforderst, gibts ja nix, was blocken kann (ausser vlt. n http-Auth, was ja aber nicht der Fall ist).

wro 13. Jan 2008 01:23

Re: IdHTTP.Get - und kein Inhalt geliefert.
 
achso... :wall: Gut, dass es Leute gibt, die denken und auch noch hilfsbereit sind. Danke nochmals, vielleicht kommt der Tag, dass ich auch mal helfen kann.

SirThornberry 13. Jan 2008 22:42

Re: IdHTTP.Get - und kein Inhalt geliefert.
 
wenn da ein script wäre was durch den browser ausgeführt wird hätte man das im Quelltext stehen müssen (es hätte was zurück geliefert werden müssen). So glaube ich einfach das HandleRedirects nicht aktiviert war.

wro 14. Jan 2008 20:18

Re: IdHTTP.Get - und kein Inhalt geliefert.
 
Eher nicht:

Zitat:

Delphi-Quellcode:
with HTTP do
    begin
      HandleRedirects := true;

Und trotzdem hat es mit der kompletten Addresse nicht hingehauen...

Gruß

wro 17. Jan 2008 00:50

Re: IdHTTP.Get - und kein Inhalt geliefert.
 
Ich habe mich wohl ein bisschen zu früh gefreut...

Mit der Lösung, die anscheinend funktionierte ist nur der Kopf der Datei richtig (kam jetzt beim Parsen raus) :wall:

Also mit
Delphi-Quellcode:
Memo1.Text:=HTTP.Get('http://fritz.box/html/de/FRITZ!Box_Anrufliste.csv');
bekommt man den Anfang der .csv, aber nicht die volle Liste...

Google schlägt noch folgende Addressen vor:
http://fritz.box/html/anrufliste.html - zeigt den HTML-Inhalt, der ja voller Frames ist, der richtige Frame sollte sein: "/cgi-bin/webcm?getpage=../html/index_anrufliste.html", funktioniert aber auch nicht :(

TKC 17. Jan 2008 02:10

Re: IdHTTP.Get - und kein Inhalt geliefert.
 
hi,
versuche mal vorher das aufzurufen :wink:
Delphi-Quellcode:
HTTP.Get('http://fritz.box/cgi-bin/webcm?getpage=../html/de/menus/menu2.html&errorpage=../html/de/menus/menu2.html&var:lang=de&var:pagename=foncalls&var:errorpagename=foncalls&var:menu=fon');

wro 17. Jan 2008 02:18

Re: IdHTTP.Get - und kein Inhalt geliefert.
 
Uhm. Aktualisieren der Anrufliste davor... stand ja irgendwie auch dabei. Das klappt aber nicht. Immer noch 'Invalid argument to date encode' (da wird der CarryFlag "0" gesetzt). Ob das mit dem javascript zusammenhängt? Irgendwie muss der Browser für diese Konfigurationsseiten JS-Fähig sein, das ist die Indy-Komponente wohl nicht, oder?

Brtw, ACE-ppc ich habe Deinen Code (http://www.delphipraxis.net/internal...t.php?t=109284)auch schon ausprobiert (den von Code-Library), der gibt mir auch reihenweise Fehler aus ;)

P.S. Wireshark meint, dass ich für die .csv Liste unbedingt GET /cgi-bin/webcm?getpage=..%2Fhtml%2Fde%2FFRITZ%21Box_Anrufli ste.csv verwenden soll, was aber genau den selben Fehler verursacht. Hat der Code von ACE-ppc bei jemandem funktioniert?

Zitat:

[edit] Wozu eigentlich die Anrufliste per Programm speichern? Bei mir sind das 2 Mausklicks Neutral [/edit]
Ich benötige die Daten zum Erstellen von Statistiken, die dann auf einem Webserver abgelegt werden und von Webservices genützt werden. Da ist es klar, dass ich das periodisch und automatisch machen will. Die Auswertung soll auch nur geschickt werden, wenn sich was in der Statistik ändert um Traffic zu minimieren, deswegen auch die Zwischenstufe mit Delphi, sonst könnte ich in die FB "einbrechen" und dort direkt ein skript installieren... oder so ähnlich :)

TKC 17. Jan 2008 14:25

Re: IdHTTP.Get - und kein Inhalt geliefert.
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,

also bei mir klappt das absolut sauber ... ich habe mir eine kleine Komponente dafür geschrieben.
Ich hänge sie die mal mit an ... dann kannst du selbst in den Quelltext schauen .. eine Beispiel Programm zur verwendung ist auch dabei.

TKC 18. Jan 2008 14:33

Re: IdHTTP.Get - und kein Inhalt geliefert.
 
War ja klar das da keine Rückmeldung mehr kommt. :(

Ein Einfaches Danke ist doch nicht zu viel verlangt, oder?

wro 19. Jan 2008 01:45

Re: IdHTTP.Get - und kein Inhalt geliefert.
 
Harte Worte - wohl zu oft die Erfahrung gemacht. Aber der Grund ist ein anderer: Ich würde ja was sagen, wenn ich es schon ausprobiert hätte (obwohl der Kernteil ist ja der, den ich schon ausprobierte). Ich hatte noch nicht die Zeit. Und JEDI und diese PNG Bib habe ich auch nicht, muss erst mal holen, deswegen keine Rückmeldung. Tut mir Leid, dass es so aussieht. Hab z. Z. ein bissl was mit dem Studium um die Ohren. Ah, und vll. versuche ich die Daten auch per Telnet zu holen. ich schreibe natürlich was, wenn ich den Fehler bei mir finde oder überhaupt weiterkomme. Aber da ich schon hier bin: Danke auf jeden Fall für das Beispiel und die Files!.

TKC 19. Jan 2008 19:47

Re: IdHTTP.Get - und kein Inhalt geliefert.
 
hi,
sorry ... habe das halt schon öfters so erlebt.

wro 16. Feb 2008 14:40

Re: IdHTTP.Get - und kein Inhalt geliefert.
 
Hallo

Nach langem hin und her habe ich immer noch keine Lösung des Problems gefunden. Wollte nur vorbeischauen und mich nochmals bei allen bedanken für die Hilfe und bei Ace für die source (obwohl ich es doch nicht zum Laufen gebracht habe ich noob). Ich muss mich wohl intensiver damit beschäftigen. Sollte was dabei rauskommen, werde ich es natürlich hier posten.

*bedank*

Gruß

wro 18. Feb 2008 14:24

Re: IdHTTP.Get - und kein Inhalt geliefert.
 
Ok, ok... bin ich nun weiter? ;)

Also:

Zum auffrischen der Anrufliste braucht man etwas vorher aufzurufen.
Vorschlag von google:

Delphi-Quellcode:
http://fritz.box/cgi-bin/webcm?getpage=../html/de/menus/menu2.html&var:lang=de&var:menu=fon&var:pagename=foncalls
Wenn man das mit dem Browser aufruft landet man auf der index.html (Fritzbox meldet über telnet: SECURITY VIOLATION -> just jump to index.html), aber die Anrufliste wird aktualisiert. Coole Sache, mit IdHTTP läuft es nicht, obwohl HandleRedirects:= true; komisch ?

Vorschlag von Ace:

Delphi-Quellcode:
[url]http://fritz.box/cgi-bin/webcm?getpage=../html/de/menus/menu2.html&errorpage=../html/de/menus/menu2.html&var:lang=de&var:pagename=foncalls&var:errorpagename=foncalls&var:menu=fon[/url]
Liefert ja nix zurück oder? d.h ich bekomme "Invalid argument to date encode".

Muss ich och was für die IdHTTP Komponente einstellen außer:

Delphi-Quellcode:
 with HTTP do
    begin
      HandleRedirects := true;
      Request.ContentLength := -1;
      Request.Accept := 'text/html, */*';
      HTTPOptions := [hoForceEncodeParams];
    end;
ich denke, das wäre es doch oder?


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:40 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