Laden einer Datei per HTML-Protokoll aus dem I-Net
Übersicht BlitzBasic Beginners-Corner
TheMatrixBetreff: Laden einer Datei per HTML-Protokoll aus dem I-Net |
Di, Jul 31, 2007 18:26 Antworten mit Zitat |
|
---|---|---|
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 abspeichern, jedoch kann mein Bildeditor die Datei nicht laden. Habt ihr ne Idee wie man die Datei richtig abspeichert? Gruß, Manu |
||
°_° °.° °~° °v° .. -.- |
ZaP |
Di, Jul 31, 2007 18:49 Antworten mit 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] 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 |
Di, Jul 31, 2007 19:04 Antworten mit 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. |
||
TheMatrix |
Di, Jul 31, 2007 19:11 Antworten mit Zitat |
|
---|---|---|
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 .... 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 |
Di, Jul 31, 2007 20:00 Antworten mit Zitat |
|
---|---|---|
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? 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° .. -.- |
D2006Administrator |
Di, Jul 31, 2007 22:36 Antworten mit Zitat |
|
---|---|---|
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 |
Di, Jul 31, 2007 22:41 Antworten mit Zitat |
|
---|---|---|
frag mal nicht EoF(stream)[Ende der Datei] sondern Readavil(stream)=0[nichts mehr im stream] | ||
TheMatrix |
Mi, Aug 01, 2007 0:31 Antworten mit Zitat |
|
---|---|---|
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° .. -.- |
Übersicht BlitzBasic Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group