Laden einer Datei per HTML-Protokoll aus dem I-Net

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

TheMatrix

Betreff: Laden einer Datei per HTML-Protokoll aus dem I-Net

BeitragDi, Jul 31, 2007 18:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi BB Freunde,

ich habe ein Problem. Undzwar möchte ich HTML-Dateien aus dem I-Net per HTML-Protokoll laden.

Wie das geht, weiß ich, nur weiß ich nicht, wie man die Dateien richtig abspeichert.

Hier mal ein Beispiel, was ich mein:
Code: [AUSKLAPPEN]

Graphics 640, 480, 16

stream = OpenTCPStream("www.blitzforum.de", 80)

WriteLine stream, "GET http://www.blitzforum.de/upload/file.php?id=1868 HTTP/1.1"
WriteLine stream, "Host: www.blitzforum.de"
WriteLine stream, ""

While Not Eof(stream)

   If file   WriteLine file, st$
   
   Print st$
   If st$ = "" And file = 0 file = WriteFile("C:\Test.jpeg")
   
   st$ = ReadLine$(stream)

   If ReadAvail(stream) = 0 Exit

Wend

CloseFile file
CloseTCPStream stream


Sollte eigentlich richtigerweiße dieses Photo unter C:\Test.jpeg
user posted image abspeichern, jedoch kann mein Bildeditor die Datei nicht laden.

Habt ihr ne Idee wie man die Datei richtig abspeichert?

Gruß,
Manu
°_° °.° °~° °v° .. -.-

ZaP

BeitragDi, Jul 31, 2007 18:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Moment, HTML ist aber kein Protokoll, sondern eine Textsprache.
Und was du dir runterziehen willst ist auch keine HTML Datei, sondern ein Bild.
Kann man in der Tat machen, aber dein Code weicht etwas davon ab.
Du musst so tun als ob dein Script Enter drückt, also musst du
Code: [AUSKLAPPEN]
WriteLine stream, "GET http://www.blitzforum.de/upload/file.php?id=1868" ;HTTP/1.1 <-- kann man weglassen
;WriteLine stream, "Host: www.blitzforum.de" <-- das is müll
WriteLine stream, chr$(13) ;enter/Absatz

schreiben. Den Rest solltest du selbst hinbekommen.
Starfare: Worklog, Website (download)

Silver_Knee

BeitragDi, Jul 31, 2007 19:04
Antworten mit Zitat
Benutzer-Profile anzeigen
du musst das byteweise runterladen und nicht zeilen weise da ne zeile entweder mit Chr(13) oder mit Chr(10) oder mit beidem beedet wird. Writefile speichert aber immer chr(13)+chr(10) ab also können bytes verfälscht werden.

übrigens wenn man funpic nicht Host-zeile sendet verweigert er den dienst.

TheMatrix

BeitragDi, Jul 31, 2007 19:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Moment, HTML ist aber kein Protokoll, sondern eine Textsprache.
Und was du dir runterziehen willst ist auch keine HTML Datei, sondern ein Bild.
Kann man in der Tat machen, aber dein Code weicht etwas davon ab.
Du musst so tun als ob dein Script Enter drückt, also musst du
Code: [AUSKLAPPEN] [EINKLAPPEN]
WriteLine stream, "GET https://www.blitzforum.de/uplo...1868" ;HTTP/1.1 <-- kann man weglassen
;WriteLine stream, "Host: www.blitzforum.de" <-- das is müll
WriteLine stream, chr$(13) ;enter/Absatz


HTML-Code ist ne Skriptsprache, ja. Aber wenn ich per
Code: [AUSKLAPPEN]
GET http://www.blitzforum.de/upload/file.php?id=1868" ;HTTP/1.1
abfrage, dann ist das eine Abfrage über das HTML-Protokoll Mad .... Und weglassen kann ich das auch nicht... lies das mal unter http://de.wikipedia.org/wiki/H...tionsweise nach...

Zitat:

du musst das byteweise runterladen und nicht zeilen weise da ne zeile entweder mit Chr(13) oder mit Chr(10) oder mit beidem beedet wird. Writefile speichert aber immer chr(13)+chr(10) ab also können bytes verfälscht werden.

übrigens wenn man funpic nicht Host-zeile sendet verweigert er den dienst.


Stimmt ich Trottel ^^ Hab wohl ein wenig überschnell gecodet. Big Thx!!!

Gruß, Manu
°_° °.° °~° °v° .. -.-

TheMatrix

BeitragDi, Jul 31, 2007 20:00
Antworten mit Zitat
Benutzer-Profile anzeigen
So, also runterladen kann ich nun meine Files, aber ich habe gleich das nächste Problem....

Undzwar hängt sich BB auf, wenn es nichts mehr aus dem Stream zu lesen gibt bzw. wenn er an die Zeile "if eof(stream) then exit" kommt.

Kann man das umgehen, oder ist das normal das sich BB dann aufhängt? Sad

Gruß, Manu

Edit:

Der Code...Code: [AUSKLAPPEN]
Graphics 640, 480, 16

stream = OpenTCPStream("www.blitzforum.de", 80)

WriteLine stream, "GET http://www.blitzforum.de HTTP/1.1"
WriteLine stream, "Host: www.blitzforum.de"
WriteLine stream, ""

MaxLoadTime = 1000 / 60

While Not KeyHit(1)

   Cls

   Print "Durchlauf " + MilliSecs()

   time = MilliSecs()

   While LoadFinished = False

      If file = 0
         st$ = ReadLine$(stream)
         If st$ = "" Then file = WriteFile("C:\Test.html")
      Else
         byte = ReadByte(stream)      
         WriteByte file, byte

         If Eof(stream) LoadFinished = True : CloseFile file : Exit
            
      End If

      If MilliSecs() - time > MaxLoadTime Then Exit
   Wend


Wend


Gruß, manu
°_° °.° °~° °v° .. -.-

D2006

Administrator

BeitragDi, Jul 31, 2007 22:36
Antworten mit Zitat
Benutzer-Profile anzeigen
2 Dinge:

- Das Protokoll heißt HTTP (wie auch aus dem von dir verlinkten Artikel durchsickert) und nicht HTML.
- Doppelposts sind nicht toll, bitte vermeiden!
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2

Silver_Knee

BeitragDi, Jul 31, 2007 22:41
Antworten mit Zitat
Benutzer-Profile anzeigen
frag mal nicht EoF(stream)[Ende der Datei] sondern Readavil(stream)=0[nichts mehr im stream]

TheMatrix

BeitragMi, Aug 01, 2007 0:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Sorry wegen Doppelpost...

Cool, danke Ftc, funzt wunderbar. Und die Ladezeit... GENIAL! Kann endlich meine Render Engine weiter proggen *freu*.

Gruß, Manu

Wen's interessiert, der Code: [AUSKLAPPEN]
Graphics 640, 480, 16

stream = OpenTCPStream("screenshots.softonic.com", 80)

WriteLine stream, "GET http://screenshots.softonic.com/s2de/30000/30744/0_30744.jpg HTTP/1.1"
WriteLine stream, "Host: screenshots.softonic.com"
WriteLine stream, ""

MaxLoadTime = 1000 / 40

Delay 500
While Not KeyHit(1)

    Locate 0,0 : Cls

   If file>0
      Print "Existierende Bytes im Stream: " + ReadAvail(stream) + " Byte"
   Else
      Print "Transaktion abgeschlossen..."
   End If
   
   Print "Timer: " + MilliSecs()
   
   time = MilliSecs()

   newmax = ReadAvail(stream)
   
   If ReadAvail(stream) = 0
      If file>0 And MilliSecs() > zeit + 50 Then CloseFile file : file = 0
   Else
      zeit = MilliSecs()
   End If
   
   While ReadAvail(stream)

      If file = 0
         st$ = ReadLine$(stream)      
         If st$ = "" Then file = WriteFile("C:\Test.jpg")
      Else
         byte = ReadByte(stream)
         WriteByte file, byte
      End If

      If MilliSecs() - time > MaxLoadTime Then Exit
   Wend
   
   Flip 0
Wend
°_° °.° °~° °v° .. -.-

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group