Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   API den Wert (als JSON) in der Header übergeben (https://www.delphipraxis.net/205350-api-den-wert-als-json-der-header-uebergeben.html)

seaduck 31. Aug 2020 12:45

API den Wert (als JSON) in der Header übergeben
 
Hallo,
ich versuche in Delphi über den Restclient einen Request mit der URL: 'http://..........invoices/id-f6155722/paid' erfolgreich zu implementieren. In der Header sollte die bestimmte ID: id-f6155722 als JSON übergeben werden.
Ich habe rClient.SetHTTPHeader('Content- Type', 'application/json');
rClient.SetHTTPHeader('X-Auth-Token','XXXXXXXXXXXXXXX');
die Header Parameter so wie es sein sollte gesetzt. Eine Autorisation ist nicht nötig.
Im Browser bekomme ich den Status Code: 400, über Delphi den Status Code: 404 mit der gleiche PUT Anweisung. Wenn ich den Parameter: id-f6155722 in die geschleiften Klammer setzte dann kommt über Delphi ein Status Code: 415, also gehe ich stark davon aus, dass die Header in Delphi nicht als JSON gesetzt wird und an dem Server nicht als JSON übermittelt wird.
Was könnte ich machen?
Danke vorab.

jfheins 31. Aug 2020 19:39

AW: API den Wert (als JSON) in der Header übergeben
 
Also von allein passiert da natürlich nix mit JSON.

Wenn du gültiges JSON schicken musst, dann ist das natürlich nicht richtig:
Delphi-Quellcode:
rClient.SetHTTPHeader('X-Auth-Token','123');
Was eher gehen könnte:
Delphi-Quellcode:
rClient.SetHTTPHeader('X-Auth-Token','{ token: 123 }');
Aber letztlich fehlen mir da die Infos, was du machst und was du machen solltest. Falls du nicht mehr rausgeben kannst, empfehle ich dir Postman um den Request erstmal ohne Delphi nachzubauen und dann kannst du das in Delphi nachbauen.

DeddyH 1. Sep 2020 06:07

AW: API den Wert (als JSON) in der Header übergeben
 
JSON-Daten im Header sind aber auch recht ungewöhnlich. Bist Du sicher, dass Du das richtig verstanden hast?

seaduck 1. Sep 2020 10:07

AW: API den Wert (als JSON) in der Header übergeben
 
Guten Morgen,
ich habe den RestTDebugger genutzt und sogar in dem Debbuger mit allen nötigen Konfigurationen wie in einem Browser mit RestClien- Erweiterung habe ich keinen Erfolg.
Es muss an die Url: 'https://dev. ...........ices/inv-f6155722-1eac-42d5-a43d-e4a7fa29a/paid' in dem header die invoice nr.: inv-f6155722-1eac-42d5-a43d-e4a7fa29a als JSON übergeben werden.
Die Zeile: "rClient.SetHTTPHeader('X-Auth-Token','{ token: 123 }');" könnte ich nicht modifizieren, weil ich schon den Key -H "X-Auth-Token: $API_KEY" übergebe.
Mit dem RestTDebugger bekomme ich die Fehlermeldeung: Status code: 500 Internel Server Error.
Vielleicht sollte man mehrere CustomHeader- Modifikationen erstellen: 1) mit Authentifiezierung, 2) mit Übergabe Parameter?
Ist das überhaupt in Delphi 10 möglich in der Header ein Teil oder die gesamte Header als JSON an der externen Server erfolgreich zu übergeben?

Neutral General 1. Sep 2020 10:30

AW: API den Wert (als JSON) in der Header übergeben
 
Ich bin mir wie DeddyH fast sicher, dass du kein JSON im Header übergeben sollst.
Gerade da du Content-Type application/json übergibst, sieht es danach aus als sollte das JSON im Body stehn und nicht im Header.
Ist die Dokumentation für die API die du da ansprechen willst öffentlich? Dann könntest du die mal hier verlinken. Das würde glaube ich helfen.

seaduck 1. Sep 2020 12:11

AW: API den Wert (als JSON) in der Header übergeben
 
Hallo,
ich kann keine Details mehr preisgeben, geht nicht.
Vielen Dank für die Hilfe, ich habe mit RestTDebbug alle Möglichkeiten ausprobiert, ich bin auch der Meinung, dass man in der Header keinen Wert als JSON übergeben könnte, zu mindestens bietet Delphi (10) das nicht an.

Neutral General 1. Sep 2020 12:30

AW: API den Wert (als JSON) in der Header übergeben
 
Du kannst im Header jeden String übergeben den du willst. Der String kann auch JSON sein. Sehe keinen Grund warum das rein technisch nicht funktionieren sollte.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:01 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