Dein Code ist so falsch.
myQuery.Resource:='get?param=hello world';
Das darfst du nicht so machen. Du gibts hier eine ungültige
URL an. Korrekt wäre:
Delphi-Quellcode:
myQuery.Resource:='get?param=' + TNetEncoding.URL.EncodeForm('hello world');
Sollte deine Serveranwendung wirklich fälschlicherweise ein %20 benötigen, kannst du anstatt EncodeForm() einfach nur Encode() nutzen.
Hi Rolf,
berechtigter Hinweis, aber das war nur ein schnell zusammengeschriebener Beispiel-Code, um das mit dem Dienst von httpbin gut demonstrieren zu können. In meinem echten Code bekomme ich das an den Stellen, an denen die Parameter auf die Art gesetzt werden, wohl auch durch die Nutzung von "AddParameter" gefixt, was dann letztlich auch eine bessere Lösung ist.
Was Delphi aber selbst beim Kodieren der Ressource macht, ist ja dennoch falsch, wenn die
URI doppelt kodiert wird. Ich wollte mal testen, ob das auch beim Kodieren der eigentlichen Ressource (also nicht eines möglichen Parameters) passiert. Denn prinzipiell könnte es in einer
API ja auch eine Ressource "/get/customer/Hans Meier" oder so ähnlich geben. Bin aber heute nicht dazu gekommen, mir das anzuschauen.