|
Registriert seit: 5. Mär 2014 165 Beiträge Delphi 10.2 Tokyo Architect |
#31
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) 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? 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. |
![]() |
Ansicht |
![]() |
![]() |
![]() |
ForumregelnEs 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
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
![]() |
![]() |