![]() |
REST request / Type not found
Guten Morgen!
Irgendwas übersehe ich da, oder mache grundsätzlich was falsch. ich rufe einen REST-Request mit 'user' und 'passwort' auf, und erhalte folgendes Resultat:
Code:
Scheint soweit zu passen. Der Token wird für alle anderen Requests als Authorisierung gebraucht.
{
"payload": { "sessiontoken": "85955b90-b134-4c24-822a-28b23c12c57a" }, "error": null, "retcode": 0 } Wenn ich nun aber folgende Funktion aufrufe (aus dem Manual):
Code:
contextDataPositionsForChapter(
UUID sessionID, /* Session ID */ Integer chapter, /* Kapitel */ String language, /* Sprache */ Integer version, /* Version */ Integer revision /* Kapitel-Stand */ ): NPKPositionEcoData
Delphi-Quellcode:
Bekomme ich folgendes Resultat:
function TfrmECO.contextDataPositionsForChapter(sessionID, chapter, version, revision : string): boolean;
var jsValue : TJSONValue; jsRequest : TJSONObject; jsDataStr : string; jsStr : string; obj, data : TJSONObject; retcode : Integer; httpRes : TStream; begin Result := True; RESTClient1.BaseURL := 'https://contextdata.crb.ch/ctxdata/rest/1.0/published/eco/contextDataPositionsForChapter'; RESTClient1.Params.Clear; RESTRequest1.ClearBody; jsRequest := TJSONObject.Create(); jsRequest.AddPair(TJSONPair.Create('sessionID', TJSONString.Create(sessionID))); jsRequest.AddPair(TJSONPair.Create('chapter', TJSONNumber.Create(chapter))); jsRequest.AddPair(TJSONPair.Create('language', 'de')); jsRequest.AddPair(TJSONPair.Create('version', TJSONNumber.Create(version))); jsRequest.AddPair(TJSONPair.Create('revision', TJSONNumber.Create(revision))); RESTRequest1.AddBody(jsRequest); jsRequest.Free(); RESTRequest1.Execute; jsValue:=RESTResponse1.JSONValue; obj := RESTResponse1.JSONValue as TJSONObject; jsStr := PrettyJSON(jsValue.ToString); SynEdit1.BeginUpdate; SynEdit1.Text := jsStr; SynEdit1.EndUpdate; end;
Code:
retcode 100
{
"payload": null, "error": "Type not found", "retcode": 100 } Fehler: der Kontextdaten-Typ wurde nicht gefunden bzw. entspricht keinem Webservice-Pfad. Hat jemand eine Idee was ich hier falsch mache? Gruss, Jörn |
AW: REST request / Type not found
Funktioniert es denn, wenn Du die Daten z.B. mit
![]() |
AW: REST request / Type not found
Danke DeddyH
werde ich mal versuchen. Problem könnte sein, dass das Token als Cookie abgelegt ist, und nur innerhalb der Session gültig ist. Jörn |
AW: REST request / Type not found
Stimmt denn die Art des Requests (GET/POST)?
|
AW: REST request / Type not found
Die Request-Methode ist richtig ...
|
AW: REST request / Type not found
Wenn ich mir eine URL zusammenzimmere, und dies in Browser kopiere
![]() bekomme ich folgendes:
Code:
was nicht verwunderlich ist, da die sessionID (?a724cbc3-f7f0-4f98-827a-832613807571) im Browser nicht mehr gültig ist.
{
"error": "Unauthorized", "payload": null, "retcode": 30 } Was meint ihr zur Idee, es mal mit den Indys/TNetHTTPClient o.ä. zu versuchen? Gruss, Jörn |
AW: REST request / Type not found
Nur als kleiner Tipp: Unter Tools -> REST-Debugger macht so etwas in der Regel mehr Spaß als ständig neu zu kompilieren und "live" in der eigenen .exe zu testen.
|
AW: REST request / Type not found
Danke für den Tipp. Habe ich schon rumgespielt.
Bisher habe ich's mit dem RESTDebugger nicht hinbekommen mich einzuloggen. Die Funktion erwartet als einen der Parameter ein ziemlich umfangreiches xml Innerhalb Delphi funktioniert dies soweit. Werde mich noch etwas mit dem RESTDebugger beschäftigen... Gruss, Jörn |
AW: REST request / Type not found
So, die Lösung ist (für mich) gefunden. Mit den ganzen REST-klassen wollte es einfach nicht.
Habe mir nun eine Lösung mit TNetHTTPClient (URL+Query) gebastelt. Funktioniert wie gewünscht. Gruss, Jörn |
AW: REST request / Type not found
Ich kann in deinem Code nicht sehen, wie der REST-Aufruf das SessionToken mitbekommt. In der Doku zu der API müsste ja irgendwo stehen, wo man das mitgeben muss (vermutlich als Header, aber welcher?). Überhaupt wäre ein Einblick in die API-Dokumentation hier recht hilfreich. Dann klappt das auch mit den REST-Klassen.
Ach ja, die verwendete Delphi-Version wäre auch von Interesse. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:38 Uhr. |
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