Entwickler-Ecke

Internet / Netzwerk - Indy Get url problem


sfan - Fr 02.04.10 05:27
Titel: Indy Get url problem
Hallo ich benutze D2009 und habe folgendes Problem:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
..
var indy:TIdhttp;
begin
  indy:=TIdhttp.Create();
  indy.get('http://www.bild.de/BILD/news/telegramm/news-ticker,rendertext=12054902.html');
end;

wenn ich diesen Code ausführe bekomme ich folgende Fehlermeldung:
Zitat:
HTTP 1.1 404 No resources at
/BILD/news/telegramm/news-ticker,rendertext?12054902.html

Ich weiß hier wirklich nicht mehr weiter, liegt es evtl am String format? da die Fehlermeldung "rendertext?12054902" anstatt "rendertext=12054902" widergibt.

Kann mir jemand weiterhelfen?

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


ALF - Fr 02.04.10 11:30

Lass mal das makierte weg 12054902.html bin mir sicher, das es daran liegt!?
Man erwartet eine ID zurück und keine html/php schätze ich mal.

Gruss ALf


Andreas L. - Fr 02.04.10 13:57

Es könnte auch sein das die URL serverseitig mit mod_rewrite umgeschrieben wird, hier dürfte die Eigenschaft HandleRedirects von TIdHTTP Abhilfe schaffen.


artelogic - Fr 02.04.10 21:50

Also mit Indy 10.5.5 funktioniert's ohne Fehlermeldung. Welche Version benutzt du?

Und um die empfangenen Daten benutzen zu können, fehlt da noch 'ne Zuweisung:


Delphi-Quelltext
1:
Str := indy.get('http://www.bild.de/BILD/news/telegramm/news-ticker,rendertext=12054902.html');                    



PS: Die Endung ".html" muss natürlich mit angegeben werden und am HandleRedirects liegt's auch nicht, dann käme ein Fehler 30X. Außerdem ist die Seite nicht redirected. Aber schaden würde es trotzdem nicht HandleRedirects auf True zu setzen. ;)


Xeron - Fr 02.04.10 22:47

Ich würde mal sagen, du musst einen Stream öffnen und der gedownloadeden Datei einen Platz auf der Festplatte reservieren.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
var
  Form1: TForm1;
  fs: TFileStream;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  fs := TFileStream.Create('C:\Users\******\Desktop\Test.html', fmcreate);
  idHTTP1.Get(URL, fs);
  fs.free;
end;

end.


artelogic - Fr 02.04.10 23:07

Das musst du nicht! 8)