Hallo alle miteinander,
im wiki auf freepascal.org gibt es ein "Webserver Example" unter folgendem Link:
https://wiki.freepascal.org/fpWeb_Tutor ... er_example
wenn ich das compiliere und starte kann ich folgendes als URL im Browser eingeben:
http://127.0.0.1:8080
Ergibt: Route 1
Also OK!
Ich schaffe es jedoch nicht Route 2 zu starten. Was muss ich im Browser eingeben um Route 2 zu bekommen?
Egal was ich eingebe es kommt immer: "Fehler: Verbindung fehlgeschlagen"
Infos:
Xubuntu 20.04.4.LTS
Lazarus: 2.06+dfsg-3
FPC-Version: 3.0.4
Wenn noch Infos fehlen ... bitte melden wird nachgereicht.
Danke schon mal.
Gruß
PS4711
[gelöst]Frage zu Webserver example im wiki.freepascal.org
-
- Beiträge: 16
- Registriert: Mi 1. Dez 2021, 13:39
- OS, Lazarus, FPC: Lazarus 2.2.0 // FPC 3.2.2 x86_64-linux-gtk2 // xubuntu 22.04
- CPU-Target: 64Bit
[gelöst]Frage zu Webserver example im wiki.freepascal.org
Zuletzt geändert von ps4711 am Sa 9. Apr 2022, 12:51, insgesamt 1-mal geändert.
- af0815
- Lazarusforum e. V.
- Beiträge: 6770
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Frage zu Webserver example im wiki.freepascal.org
http://127.0.0.1:8080/route2 sollte es meiner Meinung nach sein.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 16
- Registriert: Mi 1. Dez 2021, 13:39
- OS, Lazarus, FPC: Lazarus 2.2.0 // FPC 3.2.2 x86_64-linux-gtk2 // xubuntu 22.04
- CPU-Target: 64Bit
Re: Frage zu Webserver example im wiki.freepascal.org
Vielen Dank! Das war's.
Mein Fehler war, dass ich die Portangabe immer ans Ende der URL gepackt habe
Noch eine Frage zu dem "Webserver example".
Habe ich das richtig verstanden, dass man mit Hilfe dieser Routen die einzelnen Internetseiten bzw. deren Logikdarstellen kann.
Das heißt man würde eine Route z.B. "Kontaktformular" erstellen und oder z.B. eine Route "Impressum".
Wenn ich das missverstanden habe welche Funktion haben dann die Routen?
Mein Fehler war, dass ich die Portangabe immer ans Ende der URL gepackt habe

Noch eine Frage zu dem "Webserver example".
Habe ich das richtig verstanden, dass man mit Hilfe dieser Routen die einzelnen Internetseiten bzw. deren Logikdarstellen kann.
Das heißt man würde eine Route z.B. "Kontaktformular" erstellen und oder z.B. eine Route "Impressum".
Wenn ich das missverstanden habe welche Funktion haben dann die Routen?
- af0815
- Lazarusforum e. V.
- Beiträge: 6770
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: Frage zu Webserver example im wiki.freepascal.org
Das kommt schon so hin. Die Route gibt an, welcher Programmteil für die Bearbeitung zuständig ist. Aber all zuviel Ahnung habe ich da auch nicht, ich zehre da noch ein wenig von meinen Delphi Schulungen - und die sind auch schon länger her 

Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 726
- Registriert: Do 27. Sep 2012, 00:07
- OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
- CPU-Target: x86_64-win64
- Wohnort: Hamburg
Re: Frage zu Webserver example im wiki.freepascal.org
Die Route ist so etwas wie Ordner bzw. Dateiteil einer URL. Wenn du z.B. http://127.0.0.1:8080/impressum hast, dann musst du es so registrieren:ps4711 hat geschrieben: Mi 6. Apr 2022, 20:56 Vielen Dank! Das war's.
Mein Fehler war, dass ich die Portangabe immer ans Ende der URL gepackt habe![]()
Noch eine Frage zu dem "Webserver example".
Habe ich das richtig verstanden, dass man mit Hilfe dieser Routen die einzelnen Internetseiten bzw. deren Logikdarstellen kann.
Das heißt man würde eine Route z.B. "Kontaktformular" erstellen und oder z.B. eine Route "Impressum".
Wenn ich das missverstanden habe welche Funktion haben dann die Routen?
HTTPRouter.registerRoute('/impressum', @myimpressum, true);
Der Teil "@myimpressum" gibt deiner Funktionsnamen an, die Funktionsnamen kannst du frei wählen, die Funktion muss aber vorhanden sein, so ähnlich wie vom Beispiel procedure myimpressum(aReq: TRequest; aResp: TResponse);.
-
- Beiträge: 16
- Registriert: Mi 1. Dez 2021, 13:39
- OS, Lazarus, FPC: Lazarus 2.2.0 // FPC 3.2.2 x86_64-linux-gtk2 // xubuntu 22.04
- CPU-Target: 64Bit
Re: Frage zu Webserver example im wiki.freepascal.org
Danke für die Info.
-
- Beiträge: 216
- Registriert: Mo 3. Jan 2011, 13:34
- OS, Lazarus, FPC: Win11 (L 3.0 FPC 3.2.2)
- CPU-Target: 64Bit
- Wohnort: Nürnberg
Frage zu Webserver example im wiki.freepascal.org
Hallo,
ich beziehe mich auf das WebServer Beispiel aus dem obengenannten Tutorial
https://wiki.freepascal.org/fpWeb_Tutor ... er_example
wenn ich das compiliere und starte kann ich folgendes als URL im Browser eingeben:
http://127.0.0.1:8080
Ergibt: Route 1
Also OK!
Nun habe ich aber eine writeln-Anweisung in diesen defaultEndpoint eingebaut
... und muss dabei feststellen, dass die route1 immer zweimal hintereinander aufgerufen wird.
Was läuft da verkehrt? Wie kann ich das zweimalige Aufrufen verhindern?
Fritz
das ist mein komplettes WebSever-Programm:
ich beziehe mich auf das WebServer Beispiel aus dem obengenannten Tutorial
https://wiki.freepascal.org/fpWeb_Tutor ... er_example
wenn ich das compiliere und starte kann ich folgendes als URL im Browser eingeben:
http://127.0.0.1:8080
Ergibt: Route 1
Also OK!
Nun habe ich aber eine writeln-Anweisung in diesen defaultEndpoint eingebaut
Code: Alles auswählen
procedure route1(aReq: TRequest; aResp: TResponse);
begin
Writeln(DateTimeToStr(now),' defaultEndpoint');
aResp.content:='<html><body><h1>Route 1 The Default</h1></body></html>';
end;
Was läuft da verkehrt? Wie kann ich das zweimalige Aufrufen verhindern?
Fritz
das ist mein komplettes WebSever-Programm:
Code: Alles auswählen
program project1;
{$mode objfpc}{$H+}
uses
{$ifdef UNIX}
cthreads, cmem,
{$endif}
sysutils, classes,
fphttpapp, httpdefs, httproute;
procedure route1(aReq: TRequest; aResp: TResponse);
begin
Writeln(DateTimeToStr(now),' defaultEndpoint');
aResp.content:='<html><body><h1>Route 1 The Default</h1></body></html>';
end;
procedure route2(aReq: TRequest; aResp: TResponse);
begin
aResp.content:='<html><body><h1>Route 2</h1></body></html>'
end;
begin
HTTPRouter.registerRoute('/', @route1, true);
HTTPRouter.registerRoute('/route2', @route2,false);
Application.port := 8080;
Application.threaded := true;
Application.initialize;
Application.run;
end.