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

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 4 von 6   « Erste     234 56   
ScharfeMietze

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

AW: rest server wie muss das post command aussehen

  Alt 21. Okt 2019, 19:51
LsList.Add('{"Hasta":"Lavista Baby "}'); habe ich geprüft es ist ein Valides Json.
Im Server werden die json daten noch gar nicht verarbeitet .. da ich sie ja bisher am Server nicht auftauchen..
Der server gibt ja eine leere meldung (ohne fehler zurück)
Ja nur dass der Server mit diesem minimal JSON nichts anfangen kann. Du musst schon was schicken, das der Server auch verarbeiten kann. Gemäss deinem Beispiel einige Nachrichten früher, müsstest du mein JSON Beispiel nutzen oder halt so formatieren, wie der Server die Daten benötigt. Mit einem simplen {"Hasta":"Lavista Baby "} wird der Server nichts anfangen können. Die JSON Daten müssten serverseitig im Actionevent OnAction in Request.Content zu finden sein.

Könntest du denn bitte auch den Serverteil hier reinposten. Was du im Client machst ist ja nun klar, aber was machst du mit der Anfrage serverseitig? Wie verarbeitset du diese dort?
Auf dem Server ist noch nichts dergleichen. Es ist der reine Standard.
Ich weiß auch vorher nicht was für Daten vom Webhook gesendet werden. (Das ist teilweise nicht mal json sondern z.B nur normaler Text.) Der Server muss es auch im Anschluss nur speichern. Die Auswertung machen andere Tools die dann auf das gespeicherte zugreifen.

Die Ausgangssituation ist das Werbedienste wie z.B. Telegramm Daten an den Server via "post" schicken. Ich brauche einfach diese "Rohdaten" die via post geschickt werden.
Der Server muss den Client auch nichts verarbeitetes antworten. ein ok für den Empfang reicht...



Hier die Serverseite WebModuleUnit1
Delphi-Quellcode:
unit WebModuleUnit1;

interface

uses
  System.SysUtils, System.Classes, Web.HTTPApp, Datasnap.DSHTTPCommon,
  Datasnap.DSHTTPWebBroker, Datasnap.DSServer,
  Web.WebFileDispatcher, Web.HTTPProd,
  DataSnap.DSAuth,
  Datasnap.DSProxyJavaScript, IPPeerServer, Datasnap.DSMetadata,
  Datasnap.DSServerMetadata, Datasnap.DSClientMetadata, Datasnap.DSCommonServer,
  Datasnap.DSHTTP;

type
  TWebModule1 = class(TWebModule)
    DSHTTPWebDispatcher1: TDSHTTPWebDispatcher;
    ServerFunctionInvoker: TPageProducer;
    ReverseString: TPageProducer;
    WebFileDispatcher1: TWebFileDispatcher;
    DSProxyGenerator1: TDSProxyGenerator;
    DSServerMetaDataProvider1: TDSServerMetaDataProvider;
    procedure ServerFunctionInvokerHTMLTag(Sender: TObject; Tag: TTag;
      const TagString: string; TagParams: TStrings; var ReplaceText: string);
    procedure WebModuleDefaultAction(Sender: TObject;
      Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
    procedure WebModuleBeforeDispatch(Sender: TObject;
      Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
    procedure WebFileDispatcher1BeforeDispatch(Sender: TObject;
      const AFileName: string; Request: TWebRequest; Response: TWebResponse;
      var Handled: Boolean);
    procedure WebModuleCreate(Sender: TObject);
    procedure WebModule1WebhookAction(Sender: TObject;
      Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);

  private
    { Private-Deklarationen }
    FServerFunctionInvokerAction: TWebActionItem;
    function AllowServerFunctionInvoker: Boolean;
  public
    { Public-Deklarationen }
  end;

var
  WebModuleClass: TComponentClass = TWebModule1;

implementation


{$R *.dfm}

uses ServerMethodsUnit1, ServerContainerUnit1, Web.WebReq, uWebhookData;

procedure TWebModule1.ServerFunctionInvokerHTMLTag(Sender: TObject; Tag: TTag;
  const TagString: string; TagParams: TStrings; var ReplaceText: string);
begin
  if SameText(TagString, 'urlpath') then
    ReplaceText := string(Request.InternalScriptName)
  else if SameText(TagString, 'port') then
    ReplaceText := IntToStr(Request.ServerPort)
  else if SameText(TagString, 'host') then
    ReplaceText := string(Request.Host)
  else if SameText(TagString, 'classname') then
    ReplaceText := ServerMethodsUnit1.TServerMethods1.ClassName
  else if SameText(TagString, 'loginrequired') then
    if DSHTTPWebDispatcher1.AuthenticationManager <> nil then
      ReplaceText := 'true'
    else
      ReplaceText := 'false'
  else if SameText(TagString, 'serverfunctionsjs') then
    ReplaceText := string(Request.InternalScriptName) + '/js/serverfunctions.js'
  else if SameText(TagString, 'servertime') then
    ReplaceText := DateTimeToStr(Now)
  else if SameText(TagString, 'serverfunctioninvoker') then
    if AllowServerFunctionInvoker then
      ReplaceText :=
      '<div><a href="' + string(Request.InternalScriptName) +
      '/ServerFunctionInvoker" target="_blank">Server Functions</a></div>'
    else
      ReplaceText := '';
end;

procedure TWebModule1.WebModuleDefaultAction(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
  if (Request.InternalPathInfo = '') or (Request.InternalPathInfo = '/')then
    Response.Content := ReverseString.Content
  else
    Response.SendRedirect(Request.InternalScriptName + '/');
end;


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;

procedure TWebModule1.WebModuleBeforeDispatch(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
begin
  if FServerFunctionInvokerAction <> nil then
    FServerFunctionInvokerAction.Enabled := AllowServerFunctionInvoker;
end;

function TWebModule1.AllowServerFunctionInvoker: Boolean;
begin
  Result := (Request.RemoteAddr = '127.0.0.1') or
    (Request.RemoteAddr = '0:0:0:0:0:0:0:1') or (Request.RemoteAddr = '::1');
end;

procedure TWebModule1.WebFileDispatcher1BeforeDispatch(Sender: TObject;
  const AFileName: string; Request: TWebRequest; Response: TWebResponse;
  var Handled: Boolean);
var
  D1, D2: TDateTime;
begin
  Handled := False;
  if SameFileName(ExtractFileName(AFileName), 'serverfunctions.js') then
    if not FileExists(AFileName) or (FileAge(AFileName, D1) and FileAge(WebApplicationFileName, D2) and (D1 < D2)) then
    begin
      DSProxyGenerator1.TargetDirectory := ExtractFilePath(AFileName);
      DSProxyGenerator1.TargetUnitName := ExtractFileName(AFileName);
      DSProxyGenerator1.Write;
    end;
end;

procedure TWebModule1.WebModuleCreate(Sender: TObject);
begin
  FServerFunctionInvokerAction := ActionByName('ServerFunctionInvokerAction');
  DSServerMetaDataProvider1.Server := DSServer;
  DSHTTPWebDispatcher1.Server := DSServer;
  if DSServer.Started then
  begin
    DSHTTPWebDispatcher1.DbxContext := DSServer.DbxContext;
    DSHTTPWebDispatcher1.Start;
  end;
  DSHTTPWebDispatcher1.AuthenticationManager := DSAuthenticationManager;
end;

initialization
finalization
  Web.WebReq.FreeWebModules;

end.





ServerMethods

Delphi-Quellcode:
Unit ServerMethodsUnit1;

interface

uses System.SysUtils, System.Classes, System.Json,
    DataSnap.DSProviderDataModuleAdapter,
    Datasnap.DSServer, Datasnap.DSAuth;

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;
    function updateWebhook(Value: string): string;
  end;

implementation


{$R *.dfm}


uses System.StrUtils, uConnectTVServer;

function TServerMethods1.EchoString(Value: string): string;
begin
  Result := Value;
  fConnect.Memo1.Lines.Add(Value);
end;

function TServerMethods1.ReverseString(Value: string): string;
begin
  Result := System.StrUtils.ReverseString(Value);
  fConnect.Memo1.Lines.Add('server = ' + Result);
end;

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

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

end.
  Mit Zitat antworten Zitat
ScharfeMietze

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

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

  Alt 21. Okt 2019, 20:51
Nach weiterem Suchen habe ich hier das gefunden. http://docwiki.embarcadero.com/RADSt...aging_Protocol
Delphi-Quellcode:
Then your request should look like this:

POST /datasnap/rest/TServerMethods1/EchoAttribute/Attr1 HTTP/1.1
....*additional headers*...
Accept: application/json
Content-Type: text/plain;charset=UTF-8

{"Attr1":"ValueToReturn"}
Also habe ich mein Post so abgewandelt.


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('{"Webhook":"Lavista Baby "}');
      nthtprqst1.Post(Url,LsList,LsStream) ;
      mmo1.Lines.Add(UTF8Decode(LsStream.DataString));
    finally
      LsStream.Free;
    end; // try
  finally
    LsList.Free;
  end; // try

end;
aber weiterhin das gleiche Ergebnis

{"result":[""]} als Antwort
Irgend etwas mach ich falsch
  Mit Zitat antworten Zitat
Edelfix

Registriert seit: 6. Feb 2015
Ort: Stadtoldendorf
90 Beiträge
 
Delphi 10.3 Rio
 
#33

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

  Alt 22. Okt 2019, 08:45
Ich vermute dass der Fehler in dem POST Befehl steckt.
Dazu wird benötigt:
Die URL
Die Header Information
Die Parameter
Der Body
Welche Information an welcher Stelle bei TNetHTTPClient.Post gesetzt werden muss steht in der Delphi hilfe.

Oder in etwa so (schnelle kurz Fassung):

Delphi-Quellcode:
Function doGetData(sBody: String; url: String; var RPRec: TRPRec): Boolean;
var
  uri: TUri;
  srRQBody: TStringStream;
  RP: IHTTPResponse;
  sRQContent: String;
  sRPContent: String;
  srRPBody: TStringStream;
begin
    srRQBody:= TStringStream.Create;
    srRPBody:= TStringStream.Create;

    //-- URL
    try
      uri := TUri.Create(URL);
    except on E: Exception do
      sErr:= E.Message;
    end;

    //-- Params
    for I := 0 to slParams.Count-1 do
      uri.AddParameter(slParams.Names[i], slParams.ValueFromIndex[i]);
    
    //-- Auth
      SetAuth(RQRec);

    //-- Headers
    for I := 0 to slHeaders.Count-1 do
      NetHTTPClient1.CustomHeaders[slHeaders.Names[i]] := slHeaders.ValueFromIndex[i];

    //-- Body
    sRQContent := sBody;
    if RQRec.BodyMode='rawthen
    begin
      srRQBody.WriteString(sRQContent);
      srRQBody.Position := 0;
    end else
    if RQRec.BodyMode='x-www-form-urlencodedthen
    begin
      sRQContent := 'data'+'='+sRQContent;
      srRQBody.WriteString(sRQContent);
      srRQBody.Position := 0;
    end;


    RP := NetHTTPClient1.Post(uri.ToString, srRQBody, srRPBody);
    sRPContent := srRPBody.DataString;
    RPRec.StatusCode := RP.StatusCode;
    RPRec.StatusText := PChar(RP.StatusText);
    RPRec.ResponseText := PChar(sRPContent);
    if RPRec.StatusCode=200 then
      Result := true;
End;
  Mit Zitat antworten Zitat
ScharfeMietze

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

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

  Alt 22. Okt 2019, 12:24
Ich vermute dass der Fehler in dem POST Befehl steckt.
Dazu wird benötigt:
Die URL
Die Header Information
Die Parameter
Der Body
Welche Information an welcher Stelle bei TNetHTTPClient.Post gesetzt werden muss steht in der Delphi hilfe.

Oder in etwa so (schnelle kurz Fassung):

Function doGetData(sBody: String; url: String; var RPRec: TRPRec): Boolean;
RPRec: TRPRec wird leider nicht erkannt
Mit dem Rest habe ich offensichtlich ein Problem.
zB.
https://alpt.kxmwm3epa9wmpje7.myfritz.net/datasnap/rest/TServerMethods1/Webhook/xbelibigedaten funktioniert via url
Webhook update Key =xbelibigedaten die serverseite dazu ist

Delphi-Quellcode:
function TServerMethods1.Webhook(Key: string; Data: string): string;
begin
  Result := Data;
  fConnect.Memo1.Lines.Add('Webhook Key =' + Key);
  fConnect.Memo1.Lines.Add('Webhook update Data =' + Data
  );
end;
Ich weiß nicht wo beim Post die URL aufhört und mit slash oder ohne
Delphi-Quellcode:
https://alpt.kxmwm3epa9wmpje7.myfritz.net/datasnap/rest/TServerMethods1/Webhook/ ?
https://alpt.kxmwm3epa9wmpje7.myfritz.net/datasnap/rest/TServerMethods1/Webhook ?
https://alpt.kxmwm3epa9wmpje7.myfritz.net/datasnap/rest/TServerMethods1/ ?
https://alpt.kxmwm3epa9wmpje7.myfritz.net/datasnap/rest/TServerMethods1 ?
Wie müssen die Post Parameter aufgebaut sein? damit "xbelibigedaten" an die richtige url versendet werden?

Und
Falls ich etwas am Server tun muss damit er obiges empfängt, was?
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
152 Beiträge
 
#35

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

  Alt 22. Okt 2019, 13:25
Ich frage mich, ob du da nicht Probleme hast, weil du da Datasnap verwendest. Brauchst du das überhaupt? Soweit ich dein Problem verstehe, brauchst du keine Datasnap Funktionalität dafür, das macht es dir nur viel komplizierter oder eventuell sogar unmöglich, das zu machen was du eigentlich willst. DataSnap ist ein Delphi Framework, das hierzu glaube ich fehl am Platz ist.

Mach doch ein ganz normales Webmodul ohne Datasnap und handle dann alles so wie du es haben willst. Im Moment greifft dir da DS zu stark dazwischen und das wirkt alles viel zu kompliziert/überdiemnsioniert für deine Aufgabe. DS ist nicht dafür gemacht, was du da machen willst.

Kannst du eventuell nochmals genauer beschreiben, was du genau machen willst. Ist mir noch nicht so recht klar wie da der Ablauf sein soll. Da ist noch eine 3. Instanz im Spiel, die deine Webadresse aufruft und du willst da aus den übergebenen Daten etwas machen (Z.B. Speichern in einer DB). Ist das so richtig oder was fehlt da noch? Wenn das so ist, schmeiss den ganzen DS Teil wieder raus und verarbeite die Webabfrage im Webmodul so wie du sie benötigst. Du machst dir das mit dieser simplen Aufgabe mit dem DS Ansatz viel zu schwer.

Geändert von Rolf Frei (22. Okt 2019 um 13:43 Uhr)
  Mit Zitat antworten Zitat
ScharfeMietze

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

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

  Alt 22. Okt 2019, 13:48
Ich frage mich, ob du da nicht Probleme hast, weil du da Datasnap verwendest. Brauchst du das überhaupt? Soweit ich dein Problem verstehe, brauchst du keine DataSnap Funktionalität dafür, das macht es dir nur viel komplizierter oder eventuell sogar unmöglich, das zu machen was du eigentlich willst. DataSnap ist ein Delphi framework, das hierzu glaube ich fehl am Platz ist.

Mach doch eine ganz normales Webmodul (nicht DSWebModul) und handle dann alles so wie du es haben willst. Im Moment greifft dir da DS zu stark dazwischen. DS ist nciht dafür gemacht, was du da machen willst.
Beim Rest Server bin ich gelandet weil der Rest auch immer irgendwo haperte. Bei nachinstallierten Komponenten wurde ipv6 nicht unterstüzt. Bei Indy ist das ssl gerne mal ein Problem mit dem IdHTTPServer konnte ich mir die die daten ausgeben lassen,scheitert bisher aber bei der Homeserver Https url... usw... Und der Restserver lief auf Anhieb klaglos
Wenn es irgendwo ein schönes Examlpe gibt für einen Server der das Geforderte kann bin ich jederzeit offen für neues..
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
439 Beiträge
 
#37

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

  Alt 22. Okt 2019, 14:02
Versuch mal folgendes:

Die WebhookAction nimmst du wieder raus.
Die Funktion TServerMethods1.Webhook ebenfalls raus.

und dann sowas in der Art:

function TServerMethods1.updateWebhook(Value: TJSONObject): TJSONObject;
begin
Result := Value;
fConnect.Memo1.Lines.Add('Webhook update' + Value.ToJSON);
end;

Und das ganze dann mit ..../Webhook/ und einem JSON-Text im Body als "Post" posten.
  Mit Zitat antworten Zitat
Edelfix

Registriert seit: 6. Feb 2015
Ort: Stadtoldendorf
90 Beiträge
 
Delphi 10.3 Rio
 
#38

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

  Alt 22. Okt 2019, 14:59
Noch Detaillierter:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, System.Net.URLClient,
  System.Net.HttpClient, System.Net.HttpClientComponent;

type
  TForm1 = class(TForm)
    Button1: TButton;
    NetHTTPClient1: TNetHTTPClient;
    procedure Button1Click(Sender: TObject);
  private
    sErr: string;
    slParams: TStringList;
    slHeaders: TStringList;
    Function doGetData(sBody, BodyMode, url: String; var sRP: String): Boolean;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  sBody: string;
  url: string;
  sRP: string;
  bodyMode: string;
begin
  slParams:= TStringList.Create;
  slHeaders:= TStringList.Create;
  try
    sBody := '{"Hasta":"Lavista Baby "}';
    bodyMode := 'raw';
    url:= 'deine Ziel URL';
    if doGetData(sBody,bodyMode,url,sRP) then
      showmessage(sRP);
  finally
    slParams.Free;
    slHeaders.Free;
  end;
end;

function TForm1.doGetData(sBody, BodyMode, url: String; var sRP: String): Boolean;
var
  uri: TUri;
  srRQBody: TStringStream;
  RP: IHTTPResponse;
  sRQContent: String;
  sRPContent: String;
  srRPBody: TStringStream;
  I: Integer;
  StatusCode: Integer;
  StatusText: String;
  ResponseText: String;
begin
  Result := false;
  srRQBody:= TStringStream.Create;
  srRPBody:= TStringStream.Create;
  try
    //-- URL
    try
      uri := TUri.Create(URL);
    except on E: Exception do
      sErr:= E.Message;
    end;

    //-- Params
    for I := 0 to slParams.Count-1 do
      uri.AddParameter(slParams.Names[i], slParams.ValueFromIndex[i]);

    //-- Auth
      //SetAuth(RQRec);

    //-- Headers
    for I := 0 to slHeaders.Count-1 do
      NetHTTPClient1.CustomHeaders[slHeaders.Names[i]] := slHeaders.ValueFromIndex[i];

    //-- Body
    sRQContent := sBody;
    if BodyMode='rawthen
    begin
      srRQBody.WriteString(sRQContent);
      srRQBody.Position := 0;
    end else
    if BodyMode='x-www-form-urlencodedthen
    begin
      sRQContent := 'data'+'='+sRQContent;
      srRQBody.WriteString(sRQContent);
      srRQBody.Position := 0;
    end;


    RP := NetHTTPClient1.Post(uri.ToString, srRQBody, srRPBody);
    sRPContent := srRPBody.DataString;
    StatusCode := RP.StatusCode;
    StatusText := RP.StatusText;
    ResponseText := sRPContent;
    if StatusCode=200 then
      Result := true;
  finally
    srRQBody.Free;
    srRPBody.Free;
  end;
end;

end.
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
152 Beiträge
 
#39

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

  Alt 22. Okt 2019, 15:06
Ich frage mich, ob du da nicht Probleme hast, weil du da Datasnap verwendest. Brauchst du das überhaupt? Soweit ich dein Problem verstehe, brauchst du keine DataSnap Funktionalität dafür, das macht es dir nur viel komplizierter oder eventuell sogar unmöglich, das zu machen was du eigentlich willst. DataSnap ist ein Delphi framework, das hierzu glaube ich fehl am Platz ist.

Mach doch eine ganz normales Webmodul (nicht DSWebModul) und handle dann alles so wie du es haben willst. Im Moment greifft dir da DS zu stark dazwischen. DS ist nciht dafür gemacht, was du da machen willst.
Beim Rest Server bin ich gelandet weil der Rest auch immer irgendwo haperte. Bei nachinstallierten Komponenten wurde ipv6 nicht unterstüzt. Bei Indy ist das ssl gerne mal ein Problem mit dem IdHTTPServer konnte ich mir die die daten ausgeben lassen,scheitert bisher aber bei der Homeserver Https url... usw... Und der Restserver lief auf Anhieb klaglos
Wenn es irgendwo ein schönes Examlpe gibt für einen Server der das Geforderte kann bin ich jederzeit offen für neues..
Hast du meinen letzten nachträglich hinzugefügten Zusatz auch gelesen:

Kannst du eventuell nochmals genauer beschreiben, was du genau machen willst. Ist mir noch nicht so recht klar wie da der Ablauf sein soll. Da ist noch eine 3. Instanz im Spiel (ausser deinem Client und deinem Webserver), die deine Webadresse aufruft und du willst da aus den übergebenen Daten etwas machen (Z.B. Speichern in einer DB)? Ist das so richtig oder was fehlt da noch? Wenn das so ist, schmeiss den ganzen DS Teil wieder raus und verarbeite die Webabfrage im Webmodul so wie du sie benötigst. Du machst dir das mit dieser simplen Aufgabe mit dem DS Ansatz viel zu schwer.

Was hat es mit deinem geposteten Telegramm Code zu tun? Wozu brauchst du neben dem Webserver noch einen Client? Nur zum Testen?

Geändert von Rolf Frei (22. Okt 2019 um 15:22 Uhr)
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
465 Beiträge
 
Delphi 10.3 Rio
 
#40

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

  Alt 22. Okt 2019, 15:16
Ich möchte mich Rolf da mal anschließen. Ich dachte, ich könnte vielleicht helfen, weil ich in letzter Zeit auch relativ viel Web-Zeug gemacht habe, aber ich verstehe nicht mal, was eigentlich die Frage bzw. das Problem ist. In deinem ersten Beitrag hatte ich es so verstanden, dass du einen Client schreiben willst, aber dass der nicht funktioniert. Mittlerweile verstehe ich es so, dass du aber eigentlich den Server schreiben willst.

Beitrag #31 klang für mich so, als ob es darum geht, dass du einen Server schreiben willst, der einfach ALLE Anfragen an ihn, die ein Post sind, abfängt und irgendwo speichert. Dort sollen diese "Rohdaten" dann später analysiert werden. Ist das korrekt?

Falls ja, kann ich mich Rolf nur einmal mehr anschließen: schmeiß diesen DataSnap-Zeug weg. Mit einer einfachen WebBroker-Anwendung ist das schnell und einfach gemacht.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 22:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf