AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi rest server wie muss das post Command aussehen oder welchen Server könnte ich verwend
Thema durchsuchen
Ansicht
Themen-Optionen

rest server wie muss das post Command aussehen oder welchen Server könnte ich verwend

Ein Thema von ScharfeMietze · begonnen am 19. Okt 2019 · letzter Beitrag vom 23. Okt 2019
Antwort Antwort
Seite 2 von 6     12 34     Letzte »    
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#11

AW: rest server wie muss das post command aussehen

  Alt 20. Okt 2019, 12:04
Hast du denn mal versucht, einen POST Request per cURL an den Server zu senden? Nicht das dein Delphi Code evtl. nur einen Fehler hat. Oder per PowerShell mit Invoke-WebRequest? Du könntest auch PostMan dafür verwenden, aber cURL sollte in dem Fall zum Testen bereits ausreichen.
  Mit Zitat antworten Zitat
ScharfeMietze

Registriert seit: 5. Mär 2014
165 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#12

AW: rest server wie muss das post command aussehen

  Alt 20. Okt 2019, 12:43
Mein Problem ist das ich normal nicht viel mit Servern zu tun habe. Ich rate mit der Syntax nur rum. Leider finde ich trotz tagelanger suche nicht wirklich was brauchbares. Ein Beispiel für einen einfachen Server in dem Postdata empfangen und verarbeitet werden würden mir schon reichen. Ich dachte das wäre auch mit einem Restserver einfach zu lösen... zumal es ja über einfache Browserzeile funktioniert.
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#13

AW: rest server wie muss das post command aussehen

  Alt 20. Okt 2019, 12:45
Ein Browser sendet bei einer Eingabe in die Adresszeile aber immer nur ein GET Request. Ist denn überhaupt sichergestellt, dass dein Server POST Requests akzeptiert?
  Mit Zitat antworten Zitat
ScharfeMietze

Registriert seit: 5. Mär 2014
165 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#14

AW: rest server wie muss das post command aussehen

  Alt 20. Okt 2019, 13:50
Genau das ist ja die Frage. Wie muss ich den Server einstellen, damit er post empfängt und wie verarbeite ich diese. Ich dachte das ein Server der mit get umgehen kann auch post Daten verarbeiten kann. Falls nein Was muss ich am Server tun damit er Post Daten empfangen kann?

als beispiel von Telegramm
The short version
You'll need a server that:

Supports IPv4, IPv6 is currently not supported for Webhooks.
Accepts incoming POSTs from subnets 149.154.160.0/20 and 91.108.4.0/22 on port 443, 80, 88, or 8443.

und eine Post message von Telegramm sähe so aus.

Delphi-Quellcode:
curl --tlsv1 -v -k -X POST -H "Content-Type: application/json" -H "Cache-Control: no-cache" -d '{
"update_id":10000,
"message":{
"date":1441645532,
"chat":{
"last_name":"Test Lastname",
"id":1111111,
"first_name":"Test",
"username":"Test"
},
"message_id":1365,
"from":{
"last_name":"Test Lastname",
"id":1111111,
"first_name":"Test",
"username":"Test"
},
"text":"/start"
}
}
' "https://YOUR.BOT.URL:YOURPORT/"

Wie muss ich welchen Server aufsetzen damit ich diese Daten empfangen und lesen kann.
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
755 Beiträge
 
#15

AW: rest server wie muss das post command aussehen

  Alt 21. Okt 2019, 12:13
Wie muss ich welchen Server aufsetzen damit ich diese Daten empfangen und lesen kann.
Dein Server-Projekt sollte ein Webmodule beinhalten und dieses hat die Eigenschaft "Actions". Dort musst du eine "POST-Action" hinzufügen und den Code dafür schreiben (der Inhalt des Posts steht in Request.Content).

Deine "ReverseString-Action" mit der du testest ist wohl als "GET-Action" deklariert.
  Mit Zitat antworten Zitat
ScharfeMietze

Registriert seit: 5. Mär 2014
165 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#16

AW: rest server wie muss das post command aussehen

  Alt 21. Okt 2019, 13:15
Dein Server-Projekt sollte ein Webmodule beinhalten und dieses hat die Eigenschaft "Actions". Dort musst du eine "POST-Action" hinzufügen und den Code dafür schreiben (der Inhalt des Posts steht in Request.Content).

Deine "ReverseString-Action" mit der du testest ist wohl als "GET-Action" deklariert.
Okay gefunden habe ich es und habe es hinzugefügt. Stimmt der ansatz so wie im bild?

Gibt es irgendwo Beispiele in die ich mich einlesen kann um den Code zu schreiben? Weil Google gibt nicht wirklich was dazu her *seuftz*
Aber dickes DANKE! Da bin ich schon mal einen kleinen Schritt weiter
Miniaturansicht angehängter Grafiken
anmerkung-2019-10-21-130212.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
755 Beiträge
 
#17

AW: rest server wie muss das post Command aussehen oder welchen Server könnte ich ver

  Alt 21. Okt 2019, 13:51
Bei MethodType würde ich noch mtPost angeben, ansonsten sieht es schon mal gut aus.

Im onAction kannst du sowas machen:
Delphi-Quellcode:
var
  S: String;
begin
  S := Request.Content;
  S := 'Empfangen: ' + S; // Daten verarbeiten
  Response.Content := S;
end;
Aufrufen musst du das ganze dann mit ".../webhook".

Geändert von Olli73 (21. Okt 2019 um 13:53 Uhr)
  Mit Zitat antworten Zitat
ScharfeMietze

Registriert seit: 5. Mär 2014
165 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#18

AW: rest server wie muss das post Command aussehen oder welchen Server könnte ich ver

  Alt 21. Okt 2019, 15:38
Bei MethodType würde ich noch mtPost angeben, ansonsten sieht es schon mal gut aus.

Aufrufen musst du das ganze dann mit ".../webhook".
Ich bin zwar weiter aber nicht am Ziel
auf der Clientseite sieht es so aus
Delphi-Quellcode:
procedure TfClient.btn1Click(Sender: TObject);
const
  Url = 'https://alpt.kxmwm3epa9wmpje7.myfritz.net/datasnap/rest/TServerMethods1/Webhook';
var
  LsList: TStringList;
  LsStream: TStringStream;
begin
LsList := TStringlist.Create;
  try
  LsStream := TStringStream.Create;
    try
      LsList.Add('abc=Test Client');
      nthtprqst1.Post(Url,LsList,LsStream) ;
      mmo1.Lines.Add(UTF8Decode(LsStream.DataString));
    finally
      LsStream.Free;
    end; // try
  finally
    LsList.Free;
  end; // try

end;
und ich erhalte folgende Meldung {"error":"Methode TServerMethods1.updateWebhook in der Servermethodenliste nicht gefunden"}
vorher bekam ich {"error":"Methode TServerMethods1.Webhook in der Servermethodenliste nicht gefunden"}
darauf wurde
Delphi-Quellcode:
type
  TServerMethods1 = class(TDSServerModule)
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    function EchoString(Value: string): string;
    function ReverseString(Value: string): string;
    function Webhook(Value: string): string;
  end;

function TServerMethods1.Webhook(Value: string): string;
begin
  Result := Value;
  fConnect.Memo1.Lines.Add('Webhook ' + Result);
end;
hinzugefügt.

Die
Delphi-Quellcode:
procedure TWebModule1.WebModule1WebhookAction(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
  S: String;
begin
  S := Request.Content;
  S := 'Empfangen: ' + S; // Daten verarbeiten
  fWebhook.mmo('TWebModule1.WebModule1Webhook : ' + Request.Content );
  Response.Content := S;
end;
ist wie von @Olli73 angegeben über onAction bearbeitet. siehe Bild


Was mich wundert ist
ich sende an
https://alpt.kxmwm3epa9wmpje7.myfritz.net/datasnap/rest/TServerMethods1/Webhook "webhook"
und
ich erhalte einen Fehler weil {"error":"Methode TServerMethods1.updateWebhook in der Servermethodenliste nicht gefunden"} "updatewebhook fehlt.
Ich google nun schon eine weile weil ich nicht weiß was in die function rein muss die er haben möchte. bin aber noch nicht fündig geworden. Wenn Olli73 oder andere noch Tipps hätten wäre das kurz vor dem Ziel super..
Miniaturansicht angehängter Grafiken
anmerkung-2019-10-21-152722.jpg  
  Mit Zitat antworten Zitat
ScharfeMietze

Registriert seit: 5. Mär 2014
165 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#19

AW: rest server wie muss das post Command aussehen oder welchen Server könnte ich ver

  Alt 21. Okt 2019, 15:47
kleines update
von mir wurde nun in ServerMethods1

Delphi-Quellcode:
function TServerMethods1.updateWebhook(Value: string): string;
begin
  Result := Value;
  fConnect.Memo1.Lines.Add('Webhook ' + Result);
end;
die function eingebaut. neue fehlermeldung ist nun von der Clientseite

{"error":"Nachrichteninhalt ist kein g\u00FCltiger JSON-Wert."}
  Mit Zitat antworten Zitat
ScharfeMietze

Registriert seit: 5. Mär 2014
165 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#20

AW: rest server wie muss das post Command aussehen oder welchen Server könnte ich ver

  Alt 21. Okt 2019, 15:59
update...

auf der Clentseite habe ich nun Json eingefügt.
Delphi-Quellcode:
procedure TfClient.btn1Click(Sender: TObject);
const
  Url = 'https://alpt.kxmwm3epa9wmpje7.myfritz.net/datasnap/rest/TServerMethods1/Webhook';
var
  LsList: TStringList;
  LsStream: TStringStream;
begin
LsList := TStringlist.Create;
  try
  LsStream := TStringStream.Create;
    try
      LsList.Add('{"Hasta":"Lavista Baby "}');
      nthtprqst1.Post(Url,LsList,LsStream) ;
      mmo1.Lines.Add(UTF8Decode(LsStream.DataString));
    finally
      LsStream.Free;
    end; // try
  finally
    LsList.Free;
  end; // try

end;


als Result bekomme ich nun auf der Clientseite


{"result":[""]}
und auf dem server bleibt das Json "verschollen".
wenn wenn mir nun noch jemand helfen könnte das im Nirvana verschollene Json zu finden, wäre das super...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 6     12 34     Letzte »    


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz