Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Encoding von Headervariablen in DataSnap (https://www.delphipraxis.net/215895-encoding-von-headervariablen-datasnap.html)

Maliko 23. Sep 2024 08:00

Encoding von Headervariablen in DataSnap
 
Moin,

bei uns läuft eine API welche auf DataSnap basiert und leider ist dabei jetzt aufgefallen, dass diese ein Problem mit Umlauten hat. Wenn ich im Header des Requests einen Umlaut mitschicke, kommt dieser kaputt in der Schnittstelle an (wird als Fragezeichen angezeigt).

Hier ein Beispielaufruf (zur Einfachheit in Curl)

Code:
curl --request GET \
  --url https://localhost:1234/api/rest/v21/Ping \
  --header 'Authorization: Basic 125jkhlkjsdhflsjdhflskjhfd==' \
  --header 'x-api-key: xxxx-xxxx-xxxx-xxxx-xxxx' \
  --header 'x-environment: Test' \
  --header 'x-vendorid: äbc-abc-abc'
Das ä kommt dann kaputt beim Server an. Auf die Variable greif ich mit folgendem Code zu:

Code:
Request.GetFieldByName('X-Vendorid')
Hat jemand eine Idee woran das liegen kann und wie ich den Encodingfehler behebe? Im Internet hab ich dazu nämlich nix gefunden (oder ich bin mal wieder zu dumm zum suchen).

DeddyH 23. Sep 2024 09:33

AW: Encoding von Headervariablen in DataSnap
 
https://stackoverflow.com/questions/...-a-http-header Du solltest Dich auf ASCII beschränken. Sollte das wieso auch immer nicht möglich sein, könntest Du den fraglichen Header BASE64-kodieren und auf Serverseite wieder dekodieren. Schön ist aber anders.

Maliko 23. Sep 2024 11:09

AW: Encoding von Headervariablen in DataSnap
 
Jup das hat ein Kollege auch gerade herausgefunden. Wir haben uns für den einfacheren Weg entschieden und haben in der API-Doku angegeben, dass der Wert keine Sonderzeichen/Umlaute außer '-' beinhalten darf. Danke dir trotzdem.

Rollo62 24. Sep 2024 08:22

AW: Encoding von Headervariablen in DataSnap
 
Zitat:

Zitat von Maliko (Beitrag 1541410)
... dass der Wert keine Sonderzeichen/Umlaute außer '-' beinhalten darf. Danke dir trotzdem.

Ist das nicht sowieso Pflicht bei digitalen Schnittstellen? :stupid:
Ich weiss nicht wieviele Stunden ich schon nach Fehlern gesucht habe, wo einfach irgendwelche UTF8 Zeichen oder chinesische Zeichen verwendet wurden, die man auf den ersten Blick gar nicht so einfach erkennen kann.

Mittlerweile gebe ich bei "-" auch immer den ASCII HEX-Code mit an, damit mir keiner einen "Gedankenstrich" unterjubelt, wie das gerne von Leuten aus dem Grafikdesign gemacht wird.


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