ReceiveHTTPMemory einfach und Crossplattform

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: ReceiveHTTPMemory einfach und Crossplattform

Beitrag von ts-soft »

@HeX0R
Danke für den Tipp, eingebaut, sowie eine weitere Sicherheitsmaßnahme.

@DarkDragon
Dann mach mal, ich hab doch keine Ahnung von HTTP, dies ist ein zaghafter Versuch.
Wenns denn Sinn macht und einbaubar ist, werde ich es dann nutzen :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Re: ReceiveHTTPMemory einfach und Crossplattform

Beitrag von Nino »

Der Code (also der im 1. Beitrag hier) funktioniert so nicht immer -- hab's gerade auch getestet.

Je nach Betriebssystem des Servers kann es sein, dass bei der lokalen Pfadangabe die Groß-/Kleinschreibung berücksichtigt wird. Der Code darf die Schreibung der URL also nicht ändern, das LCase() darf nur für den Vergleich benutzt werden. Statt

Code: Alles auswählen

URL = LCase(URL)
If Left(URL, 7) <> "http://" : URL = "http://" + URL : EndIf
muss es daher heißen

Code: Alles auswählen

If LCase(Left(URL, 7)) <> "http://" : URL = "http://" + URL : EndIf
Grüße, Nino
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: ReceiveHTTPMemory einfach und Crossplattform

Beitrag von ts-soft »

Dank Nino, sehr wichtiger Hinweis. Ich bin ja manchmal auch schuselig, liegt am Alter :mrgreen:
Sowas sollte nicht passieren.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Captn. Jinguji
Beiträge: 397
Registriert: 07.06.2005 19:47
Computerausstattung: PB 4.73x64, i7, WIN 10x64, ATI NVidia RTX 2070
Wohnort: Witten

Re: ReceiveHTTPMemory einfach und Crossplattform

Beitrag von Captn. Jinguji »

Sicher eher ein Spezialfall, aber das LCase auf die URL führt bei YouTube Urls zu verfälschten Keys:
richtig : http://www.youtube.com/watch?v=zQQ5sEOhbjQ
falsch : http://www.youtube.com/watch?v=zqq5seohbjq

Kann raus, oder ?
Ansonsten auch von mir ein Dankeschön.

Edith: Mist sehe gerade, dass Nino praktisch das Gleiche in anderen Worten gepostet hat
Sorry
Ist das Kunst hier, oder kann das weg ?
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: ReceiveHTTPMemory einfach und Crossplattform

Beitrag von ts-soft »

Das mit dem LCase ist doch bereits gefixed :wink:

Hier noch ein Crossplattform Beispiel:

Code: Alles auswählen

If InitSound() = 0
  MessageRequester("Error", "Can't initialize sound playback !", 0) 
  End
EndIf

If InitNetwork() = 0
  MessageRequester("Error", "Can't initialize network !", 0) 
  End
EndIf

Define *Mem = ReceiveHTTPMemory("http://realsource.de/tmp/popc0rn.xm")
If *Mem
  If CatchModule(0, *Mem, MemorySize(*Mem))
    PlayModule(0)
    MessageRequester("popc0rn.xm", "Press okay to stop!")
  EndIf
  FreeMemory(*Mem)
EndIf
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Kevin
Beiträge: 236
Registriert: 11.06.2007 12:55

Re: ReceiveHTTPMemory einfach und Crossplattform

Beitrag von Kevin »

hab noch einen kleinen fehler gefunden:

Code: Alles auswählen

InitNetwork()
*mem = ReceiveHTTPMemory("http://www.purebasic.fr/blog/")
Benutzeravatar
Shardik
Beiträge: 746
Registriert: 25.01.2005 12:19

Re: ReceiveHTTPMemory einfach und Crossplattform

Beitrag von Shardik »

ts-soft hat geschrieben:Hier noch ein Crossplattform Beispiel:

Code: Alles auswählen

If InitSound() = 0
  MessageRequester("Error", "Can't initialize sound playback !", 0) 
  End
EndIf

If InitNetwork() = 0
  MessageRequester("Error", "Can't initialize network !", 0) 
  End
EndIf

Define *Mem = ReceiveHTTPMemory("http://realsource.de/tmp/popc0rn.xm")
If *Mem
  If CatchModule(0, *Mem, MemorySize(*Mem))
    PlayModule(0)
    MessageRequester("popc0rn.xm", "Press okay to stop!")
  EndIf
  FreeMemory(*Mem)
EndIf
Hallo Thomas,

Dein "Crossplattform"-Beispiel funktioniert bei mir problemlos unter Windows XP SP3 x86,
Windows 7 x86 und andLinux/Kubuntu 9.04 x86. Aber auf meinem iMac mit MacOS X
10.6.6 funktioniert es nicht zufriedenstellend: das Musik-Modul wird zwar geladen und
abgespielt, aber es ertönt ein sehr lautes Rauschen beim Abspielen und die Melodie ist nur
zu "erahnen" :wink:. Dies wird ein Fehler in der PlayModule()-Funktion der Mac-Version sein
und ich werde den Fehler nach einer noch zu erfolgenden genaueren Analyse mit Deinem
Beispiel-Code im englischen Mac Bug-Forum melden, damit Fred oder freak sich der Sache
annehmen können...
Benutzeravatar
Rings
Beiträge: 977
Registriert: 29.08.2004 08:48

Re: ReceiveHTTPMemory einfach und Crossplattform

Beitrag von Rings »

thx for sharing :)
Rings hat geschrieben:ziert sich nich beim zitieren
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Re: ReceiveHTTPMemory einfach und Crossplattform

Beitrag von bobobo »

cool :mrgreen: .. endlich mal anständiges was mit timeout (was mir in der ReceiveHTTPFile() von Pb eigentlich immer fehlt)
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
dige
Beiträge: 1236
Registriert: 08.09.2004 08:53

Re: ReceiveHTTPMemory einfach und Crossplattform

Beitrag von dige »

... jetzt fehlt eigentlich nur noch die Proxy-Funktionalität..
"Papa, ich laufe schneller - dann ist es nicht so weit."
Antworten