AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi IdHTTP empfängt komische Zeichen von wikipedia (Bug?)
Thema durchsuchen
Ansicht
Themen-Optionen

IdHTTP empfängt komische Zeichen von wikipedia (Bug?)

Ein Thema von atc · begonnen am 12. Dez 2012 · letzter Beitrag vom 15. Dez 2012
Antwort Antwort
atc

Registriert seit: 3. Dez 2010
17 Beiträge
 
#1

IdHTTP empfängt komische Zeichen von wikipedia (Bug?)

  Alt 12. Dez 2012, 17:42
Delphi-Version: XE2
Hallo,

ich bin bei der Verwendung der Indy HTTP-Komponente auf ein komisches Problem gestoßen.

Folgender Code:
Delphi-Quellcode:
memo1.Text := idhttp1.Get('http://en.wikipedia.org/wiki/A');
memo2.Text := idhttp1.Get('http://en.wikipedia.org/wiki/B');
Erzeugt diese Ausgabe: siehe Anhang.

Also das eine Dokument wird korrekt abgerufen und das andere nicht. Mit einem HTTP-Sniffer habe ich gesehen, dass die Antwort von wikipedia vollständig übertragen wird, also muss es ein Bug der Komponente sein, oder woran könnte es sonst liegen?

10.5.9.0 ist meine Indy Version.

Das Problem scheint auch nur bei der Seite http://en.wikipedia.org/wiki/A aufzutreten
Miniaturansicht angehängter Grafiken
unbenannt.png  
  Mit Zitat antworten Zitat
atc

Registriert seit: 3. Dez 2010
17 Beiträge
 
#2

AW: IdHTTP empfängt komische Zeichen von wikipedia (Bug?)

  Alt 12. Dez 2012, 18:54
Kleiner Nachtrag: Mit Delphi 2007 und Indy 10.1.5 tritt das gleiche Problem auf.

Wenn ich die Antwort in einer Datei speichere:
Delphi-Quellcode:
fs:=tfilestream.Create('c:\a1.txt',fmcreate);
idhttp1.Get('http://en.wikipedia.org/wiki/A',fs);
fs.Free;
erhalte ich eine Datei wie im Anhang zu sehen.

Immer nur bei der Seite http://en.wikipedia.org/wiki/A

Wie kann das sein? Kann das jemand reproduzieren?
Miniaturansicht angehängter Grafiken
unbenannt.png  
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

AW: IdHTTP empfängt komische Zeichen von wikipedia (Bug?)

  Alt 12. Dez 2012, 19:15
Kann ich auch bei 10.5.9.0 bestätigen. Sieht für mich nach einem Encodingproblem aus.
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: IdHTTP empfängt komische Zeichen von wikipedia (Bug?)

  Alt 12. Dez 2012, 19:33
.. ich habe die Seite mal mit wget heruntergeladen.

Die Datei beginnt mit 1F 8B 08 (das ist die Signatur eines komprimierten Files).
Wenn man die Datei nun mit gunzip dekomprimiert bekommt man lesbaren html code.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
atc

Registriert seit: 3. Dez 2010
17 Beiträge
 
#5

AW: IdHTTP empfängt komische Zeichen von wikipedia (Bug?)

  Alt 12. Dez 2012, 19:40
Danke, ich dachte immer Indy erledigt das mit dem (de)komprimieren automatisch...
Bleibt nur noch die Frage, warum gerade diese Seite komprimiert übertragen wird und alle anderen nicht?
  Mit Zitat antworten Zitat
Benutzerbild von geskill
geskill

Registriert seit: 17. Feb 2007
Ort: NRW
420 Beiträge
 
Delphi 2010 Professional
 
#6

AW: IdHTTP empfängt komische Zeichen von wikipedia (Bug?)

  Alt 15. Dez 2012, 18:17
Hey,
bei deinem GET-Request solltest du mal schauen wie dein Request.AcceptEncoding Header aussieht.

Das Stichwort ist gzip. Ist dies gesetzt wird dem Server mitgeteilt, dass er die Daten auch Komprimiert senden kann, da die Client-seite das Dekomprimieren kann.
Code:
deflate, gzip, identity, *;q=0
Damit die Indy HTTP Komponente das Dekomprimieren kann muss du lediglich eine Instanz von TIdCompressorZLib erstellen und der Compressor Eigenschaft der TidHTTP Klasse zuweisen.

Bei mir (Rev. 4861) klappt alles 1A.

Sowas kann man sich am besten auch immer per Wireshark ansehen. Auf der linken Seite der Request ohne gzip im Header, zur rechten mit der TIdCompressorZLib Klasse.

Grüße
Miniaturansicht angehängter Grafiken
wireshark-capture.jpg  
Sebastian
  Mit Zitat antworten Zitat
Antwort Antwort


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 01:18 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