AW: TMS Webcore app mit DB auf gehosteten Systemen
Okay, vielleicht bin ich auch einfach nur zu blöde ...
Du hast ja scheinbar eine CRUD API auf irgendeinem Server laufen. Die CRUD API hat ja auch einen Endpunkt mit /status/ping. Wie sieht denn dazu der Aufruf in einem Browser aus? Wenn ich http://xxxxxx.xxx/api.php?status/ping eingebe bekomme ich die schon genannte Fehlermeldung. Eigentlich laut Seite soll da ja ein ReturnCode 200 und sowas: { "db": 42, "cache": 9 } (in der Art)rauskommen..... Wie sieht das bei dir aus? Oder habe ich den Aufruf schon falsch? |
AW: TMS Webcore app mit DB auf gehosteten Systemen
Hast du eine Middleware aktiviert in der Konfiguration?
Dort kannst du auch den Debugmodus aktivieren. Und: Teste das nicht im browser sondern im REST debugger. |
AW: TMS Webcore app mit DB auf gehosteten Systemen
Sorry für die späte Antwort.
An der Konfiguration für die Middleware habe ich zumindest nichts geändert. Damit müsste es wohl CORS sein. Ja, mit dem EMBA Rest Debugger werde ich es beizeiten versuchen, wäre dir aber trotzdem dankbar, wenn du mal bei dir per Browser den status/ping Endpoint ausprobieren könntest und das Ergebnis hier postest.. DANKE und Gruß |
AW: TMS Webcore app mit DB auf gehosteten Systemen
Lass das ? weg:
http://xxxxxx.xxx/api.php/status/ping |
AW: TMS Webcore app mit DB auf gehosteten Systemen
Danke für die Info.
Irgendwie funktioniert das auf dem gehosteten System leider nicht(was auch immer ich falsch gemacht habe). Habe mir lokal nen XAMPP aufgesetzt und es funktioniert sofort. Eine Frage hätte ich noch: Was für eine TMS Connection(und wie konfiguriert) hast du zur Verbindung zu der API genutzt? Wenn du gaanz viel Muße hast hast du ja vielleicht sogar ein funktionierendes Snippet für mich :angel: |
AW: TMS Webcore app mit DB auf gehosteten Systemen
Zitat:
Delphi-Quellcode:
Der Request in der Funktion läuft asynchron ab. Wenn du auf den Aufruf warten musst, verwende eine Promise.
procedure ...RequestValue(pmResultProc: TProcBoolean);
//-------- local function ------------------------------------------- function DoHandleResponse(_pmEvent: TEventListenerEvent): Boolean; var rspJson: String; rspStatus: Integer; rspObject: TJSObject; begin asm rspJson = _pmEvent.target.responseText; rspStatus = _pmEvent.target.status; end; if rspStatus = 200 then begin rspObject := TJSJson.parseObject(rspJson); ... end; pmResultProc(...); Result := True; end; //-------- end local function --------------------------------------- var req: TJSXmlHttpRequest; requestUrl: String; begin asm var url = new URL(this.FServiceUrl); url.searchParams.append('accessToken', this.FAccessToken); requestUrl = url.toString(); end; req := TJSXmlHttpRequest.new; req.addEventListener('loadend', @DoHandleResponse); req.open('GET', requestUrl); req.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); req.send; end;
Delphi-Quellcode:
Benutzen kannst du es so:
function ...LoadValue: TJSPromise;
begin Result := TJSPromise.new( procedure(pmSuccess, pmFailed: TJSPromiseResolver) begin RequestValue( procedure(pmValue: Boolean) begin pmSuccess(pmValue); end); end); end;
Delphi-Quellcode:
Bis bald...
procedure ...btnLoadValueClick(Sender: TObject);
//-------- local function ------------------------------------------- function HandleLoadValue(pmValue: JSValue): JSValue; begin Result := pmValue; btnLoadValue.Enabled := True; ShowMessage('Value available: ' + TJSString(pmValue).ToString); end; //-------- end local function --------------------------------------- begin btnLoadValue.Enabled := False; LoadValue._then(@HandleLoadValue); end; Thomas |
AW: TMS Webcore app mit DB auf gehosteten Systemen
Hallo Thomas,
Danke für dein Beispiel! Wenn ich das richtig sehe hat das aber nichts mehr mit TMS geschweige denn mit TMS Web Core zu tun, oder habe ich da jetzt was falsch verstanden? Gruß |
AW: TMS Webcore app mit DB auf gehosteten Systemen
Zitat:
Funktioniert extrem cool und nahezu ohne Code. Was mytbo zu Fuß macht, machen die TMS Komponenten von selbst. |
AW: TMS Webcore app mit DB auf gehosteten Systemen
Zitat:
|
AW: TMS Webcore app mit DB auf gehosteten Systemen
Ich habe aus der DFM das wichtigste rauskopiert:
Code:
Also
object conNaehrwerte: TWebClientConnection
Active = False Headers.Strings = ( 'X-API-Key=12345678') DataNode = 'records' URI = 'https://www.nutritional-software.at/api.php/records/TBLXY?filter=COL1,eq,ABC' Left = 1134 Top = 568 end object cdsNaehrwerte: TWebClientDataSet Connection = conNaehrwerte Params = <> Left = 1265 Top = 561 end 1) TWebClientConnection aufs Formular und bestücken 2) TWebClientDataSet damit verbinden 3) active = true Weiter kannst du mit TWebDataSource und dann auch schon visuelle Kompopnenten zB TWebDBEdit anbinden. Ich habe zuerst nur die TWeb*-Sachen verwendet, aber hier kann man auch alles aus TTMSFNC* benutzen. Ich habe zu Beginn mit CORS gekämpft, aber wenn das API und der DB Server auf demseblen Server sind, ist das kein Thema. Der REST-Debugger war sehr hilfreich beim Verstehen, was im Header etc stehen muss bzw dann zurückgeliefert wird. Achja: Oben das
Code:
steht da nur, weil ich als Middleware die Authentifizierung aktiv habe. Wenn du die nicht hast, brauchst du den header gar nicht setzen.
Headers.Strings = (
'X-API-Key=12345678') Hilft dir das mal? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:07 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