get http stuff ohne webGadget
get http stuff ohne webGadget
hallo allesamt,
sorry für die wahrscheinlich blöde frage, ich möchte daten (rohtext auf einer website) online abfragen und diese in einen string speichern, ohne über ein webGadget zu gehen. PB ist mein erster gehversuch in richtung basic, habe vorher mit php/python/lua und derartigem gearbeitet, das ist alles etwas neu für mich. vielen dank im voraus!
sorry für die wahrscheinlich blöde frage, ich möchte daten (rohtext auf einer website) online abfragen und diese in einen string speichern, ohne über ein webGadget zu gehen. PB ist mein erster gehversuch in richtung basic, habe vorher mit php/python/lua und derartigem gearbeitet, das ist alles etwas neu für mich. vielen dank im voraus!
iMac 27" quad i7 radeon 4850 8gig ram
PB 4.4 in parallelsVM @ 2 cores 3072megs ram 32megs vram win7
PB 4.4 in parallelsVM @ 2 cores 3072megs ram 32megs vram win7
Re: get http stuff ohne webGadget
Das einfachste wäre:
Einfach die URL angeben und den Datei-Speichername und dann kannst du diese Datei öffnen (ReadFile())
und den Quelltext Zeile für Zeile auslesen (ReadString())
Code: Alles auswählen
ReceiveHTTPFile(URL$, Dateiname$)
und den Quelltext Zeile für Zeile auslesen (ReadString())
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: get http stuff ohne webGadget
danke, das habe ich auch im handbuch gesehen, aber geht es auch, ohne die datei zwischenzuspeichern?
ich suche das äquivalent zu pythons
ich suche das äquivalent zu pythons
Code: Alles auswählen
f = urllib.urlopen(url, params)
htmlSource = f.read()
f.close()
iMac 27" quad i7 radeon 4850 8gig ram
PB 4.4 in parallelsVM @ 2 cores 3072megs ram 32megs vram win7
PB 4.4 in parallelsVM @ 2 cores 3072megs ram 32megs vram win7
Re: get http stuff ohne webGadget
Code: Alles auswählen
InitNetwork()
; Lädt den Inhalt einer URL in einen String
Procedure.s DownloadToString(URL$, TimeOut=5000)
Protected Event, Time, Size, String$
Protected BufferSize = $1000
Protected *Buffer = AllocateMemory(BufferSize)
Protected ServerName$ = GetURLPart(URL$, #PB_URL_Site)
Protected ConnectionID = OpenNetworkConnection(ServerName$, 80)
If ConnectionID
SendNetworkString(ConnectionID, "GET "+URL$+" HTTP/1.0"+#LFCR$+#LFCR$)
Time = ElapsedMilliseconds()
Repeat
Delay(10)
Event = NetworkClientEvent(ConnectionID)
Until Event Or ElapsedMilliseconds()-Time > TimeOut
If Event
Repeat
Size = ReceiveNetworkData(ConnectionID, *Buffer, BufferSize)
String$ + PeekS(*Buffer, Size, #PB_Ascii)
Until Not Size
Inhalt = FindString(String$, #LFCR$, 1)
If Inhalt
ProcedureReturn Mid(String$,Inhalt+3)
Else
ProcedureReturn String$
EndIf
EndIf
EndIf
EndProcedure
Re: get http stuff ohne webGadget
ne ich ^^Autor unbekannt
Zu benutzten wäre es dann so:
Code: Alles auswählen
Inhalt$ = DownloadToString("http://data.unionbytes.de/ip.php")
Debug Inhalt$
Debugger hat geschrieben:84.188.197.188
Zuletzt geändert von STARGÅTE am 09.07.2010 15:52, insgesamt 1-mal geändert.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Re: get http stuff ohne webGadget
sehr cool, vielen dank!
#LFCR$ wird moniert, wahrscheinlich weil ich so ein demo-nutzer bin, die meldung kommt auch in den mitgelieferten examples von PB. (ich führe das programm derzeit in einer win2k virtualbox aus, ich denke, das ist nicht das Problem, oder?). die IDE schlägt mir #CRLF$ vor, was beim compilen aber auch nicht durchläuft.
habe versucht, #LFCR$ zu eliminieren, leider hängt die app 5s bis zum timeout und läuft dann normal weiter, ohne irgendetwas auszugeben.
#LFCR$ wird moniert, wahrscheinlich weil ich so ein demo-nutzer bin, die meldung kommt auch in den mitgelieferten examples von PB. (ich führe das programm derzeit in einer win2k virtualbox aus, ich denke, das ist nicht das Problem, oder?). die IDE schlägt mir #CRLF$ vor, was beim compilen aber auch nicht durchläuft.
habe versucht, #LFCR$ zu eliminieren, leider hängt die app 5s bis zum timeout und läuft dann normal weiter, ohne irgendetwas auszugeben.
iMac 27" quad i7 radeon 4850 8gig ram
PB 4.4 in parallelsVM @ 2 cores 3072megs ram 32megs vram win7
PB 4.4 in parallelsVM @ 2 cores 3072megs ram 32megs vram win7
- 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: get http stuff ohne webGadget
Code: Alles auswählen
#LF = 10 ; LineFeed, Zeilenvorschub
#CR = 13 ; Carriage Return, Wagenrücklauf, Enter
#LF$ = Chr(#LF)
#CR$ = Chr(#CR)
#LFCR$ = #LF$ + #CR$
#CRLF$ = #CR$ + #LF$
Re: get http stuff ohne webGadget
die prozedur läuft nun in ihrem eigenen thread und blockt somit die hauptapp nicht mehr, was schön ist, aber nach 5s bekomme ich immer meine debug-zeile "timeout". #lf$ und co sind gefixed, danke.
PS: tolle community
i love it
es geht jetzt... fast. den rest krieg ich selber raus. vielen Dank!
PS: tolle community

es geht jetzt... fast. den rest krieg ich selber raus. vielen Dank!
Zuletzt geändert von broozar am 08.03.2010 18:22, insgesamt 1-mal geändert.
iMac 27" quad i7 radeon 4850 8gig ram
PB 4.4 in parallelsVM @ 2 cores 3072megs ram 32megs vram win7
PB 4.4 in parallelsVM @ 2 cores 3072megs ram 32megs vram win7
Re: get http stuff ohne webGadget
ok, der letzte schritt fehlt mir. ich bekomm ein 302 "document has moved", aber über einen browser ist die seite problemlos erreichbar. auch wird nicht die adresse meines spaces im header zurückgegeben, sondern die des providers.
EDIT: http://guttgame.q-soft.ch/ip.php funktioniert, http://server.csis-game.net/scc.php erzeugt dieses 302. beide scripts sollten einfach nur die IP wiedergeben.
EDIT2: server scheint grad down zu sein, war aber auch ne gute möglichkeit, das timeout zu testen... was leider nicht korrekt arbeitet in diesem falle.
EDIT3: da der prozess bei mir sowieso in einem eigenen thread läuft, säge ich ihn einfach nach einer gewissen zeit ab, falls er noch aktiv ist. ist das so eigentlich eine gute idee? meisten funktioniert es, manchmal hängt er jedoch immernoch fest, was ich komisch finde. nicht die app hängt, sondern er hängt im versuch der verbindungsherstellung ("connecting...") und der thread wird trotzdem nicht abgesägt. die interpretation von 5000ms ist auch sehr frei manchmal... kann ich das unter VirtualBox abbuchen, läuft da was in meinem programm schief oder ist PBs interpretation von zeit in verbindung mit einem WaitWindowEvent() von natur aus "frei"...
EDIT: http://guttgame.q-soft.ch/ip.php funktioniert, http://server.csis-game.net/scc.php erzeugt dieses 302. beide scripts sollten einfach nur die IP wiedergeben.
EDIT2: server scheint grad down zu sein, war aber auch ne gute möglichkeit, das timeout zu testen... was leider nicht korrekt arbeitet in diesem falle.
EDIT3: da der prozess bei mir sowieso in einem eigenen thread läuft, säge ich ihn einfach nach einer gewissen zeit ab, falls er noch aktiv ist. ist das so eigentlich eine gute idee?
Code: Alles auswählen
If (ElapsedMilliseconds()-TimeMain > 5000) And (IsThread(ip_thread))
KillThread (ip_thread)
iMac 27" quad i7 radeon 4850 8gig ram
PB 4.4 in parallelsVM @ 2 cores 3072megs ram 32megs vram win7
PB 4.4 in parallelsVM @ 2 cores 3072megs ram 32megs vram win7
- HeX0R
- Beiträge: 3042
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3 - Kontaktdaten:
Re: get http stuff ohne webGadget
Wenn es dir nur um deine externe IP geht, da gibt's jede Menge Stuff hier im Board.
Hier z.B. ein Zweizeiler.
Hier z.B. ein Zweizeiler.
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}.:|:.{Bier spendieren}