Startseite › Foren › Deutsches LiveCode-Forum › httpdResponse ???
Schlagwörter: httpdResponse
- Dieses Thema hat 11 Antworten und 3 Teilnehmer, und wurde zuletzt aktualisiert vor 3 Jahren, 1 Monat von Klaus Major.
-
AutorBeiträge
-
-
September 21, 2021 um 11:26 Uhr #36459
Hallo Gemeinde,
ja ich schon wieder, eine Frage hat jemand Erfahrung mit dem
“httpdResponse”
ich meine wie kann ich das Dingens dazu bringen mir eine bestimmte Seite (einfache Textdatei) an einem Browser auszugeben.
Das mit dem httpdStart ist mir einigermaßen klar aber das mit dem httpdResponse eben nicht so ganz.
-
September 21, 2021 um 12:10 Uhr #36461
httpdstart startet einen kleinen Webserver auf deinem Rechner, der über den Browser angefragt werden kann.
Wenn der läuft und Du eine URL des Servers aufrufst, dann bestimmt httpdresponse, was passieren soll.Im Beispiel vom Dictionary ist es, dass nach der angefragten Datei gesucht wird und diese im Browser gerendert wird (so wie es ein normaler Webserver auch macht).
Kopiere das folgende Skript in einen Button und drück drauf 🙂
on mouseUp httpdStart "NewRequest", 12345, "My Server" launch url ("http://localhost:" & it) end mouseUp on NewRequest pSocketID, pRequest local tPath put the effective filename of this stack into tPath --> Dateiort = Ort des Stacks ist gleich das Homeverzeichnnis (muss aber beim Mac angepasst werden) set the itemDelimiter to slash put "files/" & pRequest["resource"] into the last item of tPath --> hier wird erwartet, dass im Unterverzeichnis "files" die entsprechenden Dateien liegen, die der Server servieren soll :-) if there is a file tPath then local tData put url ("binfile:" & tPath) into tData httpdResponse pSocketID, 200, tData --> wenn die Datei existiert, wird sie an den Browser übermittelt else -- not found httpdResponse pSocketID, 404 end if end NewRequest
Happy Scripting
Torsten -
September 21, 2021 um 12:38 Uhr #36463
Danke das war es hatte nur einen Denkfehler mit den “files/” ist bei mir data jetzt geht es.
Danke noch einmal.
LG Immanuel
-
September 21, 2021 um 16:18 Uhr #36464
hmm in der IDE geht es aber sobald ich das zu einer App mache (WIN u MAC) geht es nirgends.
Eine Idee?
-
September 21, 2021 um 19:01 Uhr #36479
Klingt, als würde die entsprechende LIBRARY nicht gefunden bzw. gar nicht erst der Runtime geladen. Leider ist das “automatische Suchen nach Inclusions” in den “Standalone Application Settings” nicht verlässlich.
In den “Standalone e Application Settings” klicke mal auf
-> Select inclusion for the standalone application
Und wähle dann auf der Karte -> Inclusions die Library -> HTTPD LibraryDas könnte es gewesen sein…
-
September 22, 2021 um 05:00 Uhr #36505
das funkt. nur woher soll ich bei einem größeren Projekt wissen was für Inclusions da alle anzukreuzen sind?
-
September 22, 2021 um 08:30 Uhr #36529
Hi,
Klaus hat recht, man muss auf jeden Fall die HHTP library manuell inkludieren, sonst wird das nichts.Das nächste Problem sind die Dateien, die der Server anzeigen soll. Da gibt es zwei Möglichkeiten:
1. die Dateien sind immer im selben Pfad auf dem Rechner und Du musst im Skript den absoluten Pfad setzen, in dem Du die die tPath-Variable entsprechend anpasst.
2. die Dateien sind in files und sollen mitgenommen werden. Dann musst Du den Ordner über Standalone Setting – Copy files – Copy folder importieren.
Habs eben auch mal ausprobiert, funktionert ziemlich gut. Da hat man einen eigenen Webserver zum Mitnehmen 🙂
Happy Scripting
Torsten -
September 22, 2021 um 12:15 Uhr #36543
Hallo Torsten,
ja das mit dem manuellem einbinden hat gefunkt. Habe es nur einmal gemacht und jetzt scheint es so als ob sich das LC gemerkt hat.
Das mit den Pfaden hab ich eigentlich eh schon gelöst
on pfadSetzen ## Die Pfade setzen if the environment is "mobile" then put specialFolderPath("engine") into programmPfad else put the filename of this stack into programmPfad set the itemDelimiter to "/" delete the last item of programmPfad end if put programmPfad&"/data/" into dataPfad ...
Das mit den Dateien anzeigen ist eigentlich (wenn der Groschen gefallen ist) recht einfach.
Hier eine Abänderung deines Beispiels:
on NewRequest pSocketID, pRequest local tPath put the effective filename of this stack into tPath --> Dateiort = Ort des Stacks ist gleich das Homeverzeichnnis (muss aber beim Mac angepasst werden) set the itemDelimiter to slash if pRequest["resource"] = "/test" then httpdResponse pSocketID, 200, "Jetz geht es" end if if pRequest["resource"] = "/" then put "data/tagesliste/tagesliste.txt" into the last item of tPath else put "data/tagesliste/" & pRequest["resource"] into the last item of tPath --> hier wird erwartet, dass im Unterverzeichnis "files" die entsprechenden Dateien liegen, die der Server servieren soll :-) end if if there is a file tPath then local tData put url ("binfile:" & tPath) into tData httpdResponse pSocketID, 200, tData --> wenn die Datei existiert, wird sie an den Browser übermittelt else -- not found httpdResponse pSocketID, 404, "Nicht gefunden" end if end NewRequest
eventuell kann sich da der eine oder andere auch was rausziehen.
-
September 22, 2021 um 12:21 Uhr #36544
Wir haben -> specialfolderpath(“resources”)
Bitte unbedingt auch benutzen!, die beste Erfindung von LC seit geschnitten Brot! 🙂Alles was wir über “Copy files” in den “Standalone Application Setting” unserer Runtime hinzufügen, finden wir in der Runtime in dem Ordner -> specialfolderpath(“resources”)
Und zwar auf JEDER Platform: Mac, Windows, Linux, iOS, Android!
Also:
... put specialfolderpath("resources") & "/" into tPath ... if pRequest["resource"] = "/" then --answer "Test.txt" put "data/tagesliste/tagesliste.txt" AFTER tPath else put "data/tagesliste/" & pRequest["resource"] AFTER tPath end if ...
WEITERSAGEN! 🙂
-
September 22, 2021 um 12:23 Uhr #36546
Ich sehe gerade, es ist nicht das erste Mal, daß ich Dir -> specialfolderpath(“resources”) erkläre.
Notier Dir das doch mal! 😎 -
September 22, 2021 um 12:31 Uhr #36548
Du meinst statt dem
put the effective filename of this stack into tPath
ja hast recht ich bitte gnädig um Entschuldigung
-
September 22, 2021 um 13:13 Uhr #36551
Ich erkläre es auch gerne noch zwanzig Mal, aber man macht sich dann halt so seine Gedanken…
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.