AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke REST request / Type not found
Thema durchsuchen
Ansicht
Themen-Optionen

REST request / Type not found

Ein Thema von jsp · begonnen am 7. Okt 2019 · letzter Beitrag vom 9. Okt 2019
Antwort Antwort
Seite 1 von 2  1 2      
jsp

Registriert seit: 9. Aug 2003
50 Beiträge
 
#1

REST request / Type not found

  Alt 7. Okt 2019, 09:43
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:
{
    "payload": {
        "sessiontoken": "85955b90-b134-4c24-822a-28b23c12c57a"
    },
    "error": null,
    "retcode": 0
}
Scheint soweit zu passen. Der Token wird für alle anderen Requests als Authorisierung gebraucht.
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:
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;
Bekomme ich folgendes Resultat:
Code:
{
    "payload": null,
    "error": "Type not found",
    "retcode": 100
}
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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#2

AW: REST request / Type not found

  Alt 7. Okt 2019, 10:04
Funktioniert es denn, wenn Du die Daten z.B. mit Postman verschickst?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
jsp

Registriert seit: 9. Aug 2003
50 Beiträge
 
#3

AW: REST request / Type not found

  Alt 7. Okt 2019, 10:10
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
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#4

AW: REST request / Type not found

  Alt 7. Okt 2019, 10:19
Stimmt denn die Art des Requests (GET/POST)?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
jsp

Registriert seit: 9. Aug 2003
50 Beiträge
 
#5

AW: REST request / Type not found

  Alt 7. Okt 2019, 11:02
Die Request-Methode ist richtig ...
  Mit Zitat antworten Zitat
jsp

Registriert seit: 9. Aug 2003
50 Beiträge
 
#6

AW: REST request / Type not found

  Alt 7. Okt 2019, 11:26
Wenn ich mir eine URL zusammenzimmere, und dies in Browser kopiere

https://contextdata.crb.ch/ctxdata/r...a-832613807571

bekomme ich folgendes:

Code:
{
  "error": "Unauthorized",
  "payload": null,
  "retcode": 30
}
was nicht verwunderlich ist, da die sessionID (?a724cbc3-f7f0-4f98-827a-832613807571) im Browser nicht mehr gültig ist.

Was meint ihr zur Idee, es mal mit den Indys/TNetHTTPClient o.ä. zu versuchen?

Gruss, Jörn
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: REST request / Type not found

  Alt 7. Okt 2019, 11:30
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.
  Mit Zitat antworten Zitat
jsp

Registriert seit: 9. Aug 2003
50 Beiträge
 
#8

AW: REST request / Type not found

  Alt 7. Okt 2019, 11:39
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
  Mit Zitat antworten Zitat
jsp

Registriert seit: 9. Aug 2003
50 Beiträge
 
#9

AW: REST request / Type not found

  Alt 7. Okt 2019, 14:37
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
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.475 Beiträge
 
Delphi 12 Athens
 
#10

AW: REST request / Type not found

  Alt 7. Okt 2019, 16:02
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 04:05 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