AGB  ·  Datenschutz  ·  Impressum  







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

Delphi 12 ist offiziell da!!!

Ein Thema von wjjw · begonnen am 7. Nov 2023 · letzter Beitrag vom 29. Nov 2023
 
Bbommel

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

AW: Delphi 12 ist offiziell da!!!

  Alt 8. Nov 2023, 16:19
Da ich selber das Delphi REST-Framework nicht nuntze und das lieber alles selber mache, wie ich es benötige, kann ich hierzu nicht viel sagen. Allerdings müsste Delphi das als "/get/customer/Hans%20Meier" codieren, damit das richtig ist. Der Parameterteil muss allerdings ein + enthalten. Ob das Delphi REST Framework das hier korrekt macht, ist dann natürlich die Frage. Aus diesem Grund mache ich das lieber alles selber so wie es sein müsste und verzichte auf diese Klasse. Wenn du das mal testest, würde es mich schon intressieren was dabei rauskommt.
Jetzt war ich neugierig. Ich habe mein Programm etwas angepasst, da der Dienst doch auch die Möglichkeit bietet, beliebige URLs zu testen:

Delphi-Quellcode:
program restSpace2;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils, REST.Client, System.Net.HttpClient;


var
  myRest: TRESTClient;
  myQuery: TRESTRequest;
  resultText: string;


begin
  myRest:=TRESTClient.Create('https://httpbin.org/');
  myQuery:=TRESTRequest.Create(nil);
  myQuery.Client:=myRest;
  try
    { TODO -oUser -cConsole Main : Code hier einfügen }
    myQuery.Resource:='anything/hello world?param=hello world';
    myQuery.Execute;

    if (myQuery.Response.StatusCode=200) and (myQuery.Response.JSONValue<>nil) then begin
      resultText:=myQuery.Response.JSONValue.GetValue<string>('url','!! Not found !!');
      Writeln(resultText);
      Readln;
    end;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
  myQuery.Free;
  myRest.Free;
end.
Liefert als Ausgabe vom Testserver:
Code:
https://httpbin.org/anything/hello world?param=hello%2520world
Das heißt: die Ressource wird korrekt codiert mit %20 und kommt daher auch korrekt beim Server an, nur der Parameter wird doppelt mit %2520 kodiert. Übrigens habe ich nach deinen Hinweisen noch mal etwas gegoogelt, weil mir das mit dem "+" nicht so klar war. Wenn ich das richtig verstehe, dann KANN man das "+" im Query-Parameter nutzen, was zur einfachen Lesbarkeit dienen soll, man muss es aber nicht und kann weiterhin auch "%20" nutzen, weil das immer geht. So beim W3C gelesen, die dann selber in Beispielen auch einen Parameter mit "%20" haben.

Für mich also folgende Erkenntnisse:
  1. Es ist alles nicht so dramatisch, wie ich im ersten Moment gedacht habe, als mein Programm direkt auf die Nase gefallen ist. Hier sollte ich an ein bis zwei Stellen wahrscheinlich auch mal im Code ran und das sauberer programmieren.
  2. Die doppelte Kodierung von Query-Parametern mit den Ergebnis "%2520" ist aber dennoch falsch, selbst wenn "?param=hello world" vielleicht nicht besonders schlau an der Stelle ist.
  3. Ich habe jetzt eine bessere Grundlage, um einen Eintrag fürs QP zu machen.
  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 05:43 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 by Thomas Breitkreuz