Hm, du hast in deinem Report angegeben, dass er sich auf 11.2 bezieht. Hast du dich da verklickt oder klappt das tatsächlich unter 11.2 nicht? Das wundert mich, denn unter 11.2 ist der Code zwar auch Schrott, aber er ist in einer Form Schrott, dass trotzdem eigentlich alle APIs, die ein JSON zurückgeben, funktionieren müssten, auch deine. Das, was ich in meinem Bugreport geschrieben habe, müsste auch bei dir zutreffen (klingt jetzt nach "mein Report ist besser als deiner!", ist aber nicht so gemeint
): Bei deinem Content-Type von "application/json;
api-version=7.1-preview.3" liefern sowohl 11.2 als auch 11.3 als LMimeKind ein "Unknwon". Danach kommt in 11.2 ja folgende Code:
Delphi-Quellcode:
if (FClient.FallbackCharsetEncoding <> '
')
and
not SameText(REST_NO_FALLBACK_CHARSET, FClient.FallbackCharsetEncoding)
then
begin
// Skip some obvious binary types
if LMimeKind <> TMimeTypes.TKind.Binary
then
begin
LEncoding := TEncoding.GetEncoding(FClient.FallbackCharsetEncoding);
LContentIsString := True;
end;
end
else
begin
// Even if no fallback, handle some obvious string types
if LMimeKind = TMimeTypes.TKind.Text
then
LContentIsString := True;
end;
Das heißt, wenn du nicht vorher in deinem Code das "FallbackCharset" geleert oder auf "raw" gesetzt hast, wirst du im ersten Teil der if-Abfrage landen und da das MimeKind nicht "Binary" ist, sollte dein Content gesetzt werden. So wie das da steht, ist das auch alles quatsch, weil, wenn ich nichts übersehe, ein tatsächlich gesetztes Encoding komplett ignoriert wird. Aber da die meisten APIs heutzutage wohl mit UTF8 arbeiten und ein JSON liefern, funktioniert es am Ende des Tages halt trotzdem.
In 11.3 aber nicht mehr, weil sie die Logik komplett umgekehrt haben. Nur dann, wenn der MimeType wirklich als Text erkannt wird, wird er auch wie bisher ausgewertet. Das finde ich ziemlich dämlich, denn jetzt verlassen sie sich auf ihre fest vorgegebene, endliche Aufzählung im Dictionary und dazu kommt eben das Problem mit dem aus mehreren Teilen bestehenden Content-Type, was sich jetzt eben bemerkbar macht. Hier ist der Punkt, der mich tatsächlich fassungslos macht: da wird an einer der zentralsten Stellen des ganzen REST-Frameworks eine Funktion massiv geändert und niemand testet das vernünftig? Das ist ja jetzt nicht irgendwas absurdes, sondern OData (wo das mit dem Content-Type regelmäßig vorkommt) ist weit verbreitet.
Merkwürdig finde ich aber tatsächlich immer noch, dass das bei dir auch unter 11.2 auftritt. Müsstest du vielleicht nochmal näher nachschauen.