Seite 2 von 2
Verfasst: 29.12.2005 01:49
von Konne
ja schön wenn ich in der Help was gefunden hätte
Zu solchen Funktionen findet man auch nichts in dieser Help da sie Windows-Api sind! (Erkennbar an dem "_" am Ende der Funktion)
Bei sowas muss man in ner Api-Help suchen. Diese Befehle tun auch nur unter Windows!
Verfasst: 29.12.2005 02:14
von MVXA
Konne hat geschrieben:Nehm doch "einfach" die FTP Commands.
Und gabs da nicht auch die Möglichkeit von jedem Teil dass du Updaten willst immer nen Hash zu machen und mit den Serverdaten zu vergleichen. Wenn sie unterschiedlich sind muss der eine Programmteil Upgedatet werden.
Sofern da ein gescheiter HTTP Server läuft, sollte es auch möglich sein
über den HTTP Header eine MD5 Hash Anfrage zu senden.
Verfasst: 31.12.2005 19:06
von hardfalcon
Konne hat geschrieben: ja schön wenn ich in der Help was gefunden hätte
Zu solchen Funktionen findet man auch nichts in dieser Help da sie Windows-Api sind! (Erkennbar an dem "_" am Ende der Funktion)
Bei sowas muss man in ner Api-Help suchen. Diese Befehle tun auch nur unter Windows!
Ich seh schon ein Posting:
DAU hat geschrieben:Neuer Bug in der Linux-Version PB!
Hi, ich hab grad rausgefunden, dass URLDownloadToFile_() mit der Linux-Version von PB nicht funktioniert!
EDIT: Ich hab grad unter MacOS mal getestet, da funktioniert der Befehl auch nicht!:evil:
Verfasst: 31.12.2005 19:21
von DarkDragon
Code: Alles auswählen
Procedure.l HTTPRequest(URL.s, *EndSize.LONG, PacketSize)
If Left(URL, 7) = "http://" : URL = Right(URL, Len(URL)-7) : EndIf
s = FindString(URL, "/", 1)
Host.s = "" : File.s = ""
If s <> 0 : Host.s = Left(URL, s-1) : File.s = Right(URL, Len(URL)-s) : Else : Host = URL : EndIf
ConnectionID = OpenNetworkConnection(Host, 80)
If ConnectionID
Data_.s = "GET /"+File+" HTTP/1.0"+#CRLF$
Data_.s + "Host: "+Host+#CRLF$
Data_.s + "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7"+#CRLF$
Data_.s + "Connection: close"+#CRLF$+#CRLF$
Text.s = ""
SendNetworkString(ConnectionID, Data_)
While NetworkClientEvent(ConnectionID) <> 2 : Delay(10) : Wend
*Buffer = AllocateMemory(PacketSize)
Size = ReceiveNetworkData(ConnectionID, *Buffer, PacketSize)
Text.s = PeekS(*Buffer, Size)
s = FindString(Text, "Content-Length:", 1)
If s <> 0
;Cut the Header
Length = Val(Trim(StringField(Mid(Text, s, FindString(Text, #CR$, s+5)), 2, ":")))-1
;Read the data
s = FindString(Text, #CRLF$+#CRLF$, 1)+3
Size = (PacketSize-s)
*Result = AllocateMemory(Length)
CopyMemory(*Buffer+s, *Result, Size)
If Size < Length
CurSize = ReceiveNetworkData(ConnectionID, *Buffer, PacketSize)
While Size < Length
If CurSize > 0
oSize = Size
Size + CurSize
CopyMemory(*Buffer, *Result+oSize, CurSize)
EndIf
CurSize = ReceiveNetworkData(ConnectionID, *Buffer, PacketSize)
Wend
EndIf
EndIf
If *Buffer
FreeMemory(*Buffer)
EndIf
CloseNetworkConnection(ConnectionID)
*EndSize\l = Size
ProcedureReturn *Result
EndIf
EndProcedure
Procedure DownloadToFile(URL.s, Filename.s)
File = CreateFile(#PB_Any, Filename)
If File
*Buffer = HTTPRequest(URL.s, @Size, 256)
If *Buffer
WriteData(*Buffer, Size)
CloseFile(File)
FreeMemory(*Buffer)
ProcedureReturn 1
EndIf
EndIf
EndProcedure
Noch etwas umändern und man kann auch Daten senden.
Verfasst: 02.01.2006 21:38
von Programie
Bei funzt der Code nicht, der Dabei ist. Ich habe die Library in den Ordner Userlibrary kopiert und den Code extrahiert.
