Delphi-PRAXiS
Seite 4 von 6   « Erste     234 56      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi rest server wie muss das post Command aussehen oder welchen Server könnte ich verwend (https://www.delphipraxis.net/202320-rest-server-wie-muss-das-post-command-aussehen-oder-welchen-server-koennte-ich-verwend.html)

ScharfeMietze 21. Okt 2019 18:51

AW: rest server wie muss das post command aussehen
 
Zitat:

Zitat von Rolf Frei (Beitrag 1450042)
Zitat:

Zitat von ScharfeMietze (Beitrag 1450035)
Delphi-Quellcode:
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.

ScharfeMietze 21. Okt 2019 19:51

AW: rest server wie muss das post Command aussehen oder welchen Server könnte ich ver
 
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

Delphi-Quellcode:
{"result":[""]}
als Antwort
Irgend etwas mach ich falsch:oops::pale:

Edelfix 22. Okt 2019 07:45

AW: rest server wie muss das post Command aussehen oder welchen Server könnte ich ver
 
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='raw' then
    begin
      srRQBody.WriteString(sRQContent);
      srRQBody.Position := 0;
    end else
    if RQRec.BodyMode='x-www-form-urlencoded' then
    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;

ScharfeMietze 22. Okt 2019 11:24

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

Zitat von Edelfix (Beitrag 1450051)
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;

RPRec: TRPRec wird leider nicht erkannt:(
Mit dem Rest habe ich offensichtlich ein Problem.
zB.
Delphi-Quellcode:
https://alpt.kxmwm3epa9wmpje7.myfritz.net/datasnap/rest/TServerMethods1/Webhook/xbelibigedaten
funktioniert via url
Delphi-Quellcode:
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?

Rolf Frei 22. Okt 2019 12:25

AW: rest server wie muss das post Command aussehen oder welchen Server könnte ich ver
 
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.

ScharfeMietze 22. Okt 2019 12:48

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

Zitat von Rolf Frei (Beitrag 1450062)
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..

Olli73 22. Okt 2019 13:02

AW: rest server wie muss das post Command aussehen oder welchen Server könnte ich ver
 
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.

Edelfix 22. Okt 2019 13:59

AW: rest server wie muss das post Command aussehen oder welchen Server könnte ich ver
 
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='raw' then
    begin
      srRQBody.WriteString(sRQContent);
      srRQBody.Position := 0;
    end else
    if BodyMode='x-www-form-urlencoded' then
    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.

Rolf Frei 22. Okt 2019 14:06

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

Zitat von ScharfeMietze (Beitrag 1450066)
Zitat:

Zitat von Rolf Frei (Beitrag 1450062)
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?

Bbommel 22. Okt 2019 14:16

AW: rest server wie muss das post Command aussehen oder welchen Server könnte ich ver
 
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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:40 Uhr.
Seite 4 von 6   « Erste     234 56      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz