AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi 11.3 schon da?

Ein Thema von Commander Tom · begonnen am 27. Feb 2023 · letzter Beitrag vom 12. Mär 2024
 
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
652 Beiträge
 
Delphi 12 Athens
 
#17

AW: Delphi 11.3 schon da?

  Alt 4. Mär 2023, 10:05
Ja, so was in der Art hatte ich auch schon: https://quality.embarcadero.com/browse/RSP-40549

Allerdings konnte ich mir wie im Report beschrieben mit einem Workaround helfen. Keine Ahnung ob der bei dir auch funktioniert.
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.

Geändert von Bbommel ( 4. Mär 2023 um 10:08 Uhr)
  Mit Zitat antworten Zitat
 


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 03:48 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