Website auslesen
Übersicht

![]() |
Der EisvogelBetreff: Website auslesen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo
Ich versuche gerade eine Datei die auf meinem Webserver liegt mit BM auszulesen. Folgender Code soll das bewerkstelligen: BlitzMax: [AUSKLAPPEN] Local stream:TStream = ReadURL("dereisvogel.kilu.de") Soweit so gut. Alles funktioniert. Als Ausgabe bekomme ich den Header, und den Content, allerdings sieht dieser etwas merkwürdig aus: Zitat: b
[default] 5 run=1 0 Während ich diese schreibe fällt mir auch grade auf, dass es hier im Forum sogar anders angezeigt wird als im Debugger. Im Debugger sieht das so aus: Zitat: b
[default] 5 run=1 0 Die auf meinem Server hinterlegte Datei beinhaltet allerdings folgendes: Zitat: [default]
run=1 Diese habe ich ganz normal mit dem Standard Editor von Windows gemacht. Diese "Zusatz"-Zeichen haben bestimmt irgendeinen Zweck, aber ich keinerlei Schimmer welchen und wie ich diese auswerten soll. Vielleicht mache ich ja etwas bei der Anfrage falsch. Ich bin froh über jede Hilfe, denn ich möchte diese Datei als eine INI-Datei in meinem Programm verwenden. MfG Der Eisvogel |
||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
FWeinbehemals "ich" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Der Server Antwortet mit "Transfer-Encoding: chunked" Du musst dir also die Dokumentation für diese Codierung anschauen. Google sollte da helfen.
MfG ich |
||
"Wenn die Menschen nur über das sprächen, was sie begreifen, dann würde es sehr still auf der Welt sein." Albert Einstein (1879-1955)
"If you live each day as if it was your last, someday you'll most certainly be right." Steve Jobs |
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
halbwegs offtopic:
Code: [AUSKLAPPEN] file=OpenFile("http::www.blitzforum.de") While Not Eof(file) Print ReadLine(file) Wend ist doch viel einfacher ![]() |
||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
OK. Was muss ich machen, dass der mir das "normal" liefert?
Firefox schickt folgendes an den Server: Zitat: GET /lclevelbot.ini HTTP/1.1
Host: dereisvogel.kilu.de User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 115 Connection: keep-alive If-Modified-Since: Tue, 25 May 2010 13:50:47 GMT If-None-Match: "188920e8-10-4876b71d0193f" Cache-Control: max-age=0 Und bekommt das wieder: Zitat: HTTP/1.1 304 Not Modified
Date: Tue, 25 May 2010 18:50:15 GMT Server: Apache Connection: Keep-Alive Keep-Alive: timeout=3, max=100 Etag: "188920e8-10-4876b71d0193f" Wenn ich das gleiche schicke bekomme ich das hier wieder: Zitat: HTTP/1.1 200 OK
Date: Tue, 25 May 2010 18:56:44 GMT Server: Apache Last-Modified: Tue, 25 May 2010 13:50:47 GMT ETag: "188920e8-10-4876b71d0193f" Accept-Ranges: bytes Vary: Accept-Encoding Content-Encoding: gzip Content-Length: 36 Keep-Alive: timeout=3, max=100 Connection: Keep-Alive Content-Type: text/plain ‹ ‹NIMK,Í)‰åå**ͳ5 $-æâ Wie mache ich dem Server klar, dass er es mir normal schickt? EDIT: @Goodjee: Cool danke, das kannte ich nicht. Aber das geht prima. Dennoch möchte ich aus Prinzip trotzdem noch wissen wie ich das mit meiner Methode lösen kann, damit wenn ich das doch mal brauchen werde, nicht wieder vor dme selben Mist stehe. |
||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
- Zuletzt bearbeitet von Der Eisvogel am Di, Mai 25, 2010 21:01, insgesamt einmal bearbeitet
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] file=OpenStream("http::dereisvogel.kilu.de/lclevelbot.ini")
While Not Eof(file) Print ReadLine(file) Wend das liefert bei mir die datei ohne komische zeilenumbrüche |
||
"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/ |
FWeinbehemals "ich" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
So kann man es auch machen Goodjee. Um das HTT-Protokoll aber zu verstehen, habe ich dir das mal geschrieben.
BlitzMax: [AUSKLAPPEN] SuperStrict Hier etwas Texterklärung dazu: Der Type: TSocketStream, kümmert sich um das Verbinden und alles weitere. Die Funktion ReadURL brauchst du also nicht mehr. Als erstes steht die "Größe" des folgenden Chunkes als Hex im Stream diese wird ausgelesen. Danach gehe ich in der For Next Schleife alle Bytes durch und füge sie dem resultierenden String hinzu ( Int("$a") gibt mir den Dezimalwert der Hexzahl a zurück) Wenn ein Chunk 0 Byte groß ist, ist der Content zu Ende und es kann aufgehört werden zu suchen. Quelle:http://www.jmarshall.com/easy/http/#http1.1c2 Beide Funktionen brauchen hier ~100ms und sind beide so gut wie gleich schnell (Die von Goodjee ist um 3ms schneller) [Edit] Zitat: Accept-Encoding: gzip,deflate
Der Firefox kommt mit "Komprimierten"-Daten zurecht. Diese werden "On-the-fly" Entpackt und dann dargestellt. Das in BlitzMax zu Implementieren dürfte etwas zu aufwendig sein für so eine "einfache" Abfrage. |
||
"Wenn die Menschen nur über das sprächen, was sie begreifen, dann würde es sehr still auf der Welt sein." Albert Einstein (1879-1955)
"If you live each day as if it was your last, someday you'll most certainly be right." Steve Jobs |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ok. Das hab ich verstanden. Aber besteht auch die Möglichkeit das ganze vom Server direkt so zu erhalten wie bei Goodjee's Methode? Natürlich mit dem Header. | ||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
FWeinbehemals "ich" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
In dem Beispiel oben "Überlese" ich den Header einfach mit der Schleife:
BlitzMax: [AUSKLAPPEN] Repeat Hier mit Ausgabe des Headers: BlitzMax: [AUSKLAPPEN] SuperStrict |
||
"Wenn die Menschen nur über das sprächen, was sie begreifen, dann würde es sehr still auf der Welt sein." Albert Einstein (1879-1955)
"If you live each day as if it was your last, someday you'll most certainly be right." Steve Jobs |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja das habe ich verstanden. Aber ich meine kann man es direkt vom Server so krigen ohne es selber auswerten zu müssen? | ||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
FWeinbehemals "ich" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mir ist keine bekannt. Könntest ja schauen wie OpenStream das ganze macht. Also wie es den Stream aufbaut.
MfG ich |
||
"Wenn die Menschen nur über das sprächen, was sie begreifen, dann würde es sehr still auf der Welt sein." Albert Einstein (1879-1955)
"If you live each day as if it was your last, someday you'll most certainly be right." Steve Jobs |
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe mal den entsprechenden Code aus BlitzMax - brl.httpstream - herausgesucht:
BlitzMax: [AUSKLAPPEN] stream.WriteLine "GET "+file+" HTTP/1.0" Hier wird HTTP 1.0, welches kein Aufteilen in Chunks unterstützt, genutzt. mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
![]() |
Der Eisvogel |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ah ok. Danke. | ||
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB Projekte: Window-Crasher Ich liebe es mit der WinAPI zu spielen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group