Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.556 Beiträge
 
Delphi 12 Athens
 
#9

AW: CURL in Delphi ausführen -d

  Alt Gestern, 11:45
Diese Kombination scheint zu klappen. Es kommt kein Fehler und der Content ist wie erwartet. Aber warum das jetzt funktioniert weiß ich leider nicht
Diese beiden Zeilen:
Delphi-Quellcode:
         Request.Params.AddItem('accept', 'application/json', pkHTTPHEADER, [poDoNotEncode]);
         Request.Params.AddItem('content-type', 'application/x-www-form-urlencoded', pkHTTPHEADER, [poDoNotEncode]);
kannst du noch durch diese ersetzen:
Delphi-Quellcode:
         Request.Aaccept := 'application/json';
         { Das Setzen des ContentType kann entfallen (s.u.) }
Diese Zeilen aus dem Original:
Delphi-Quellcode:
         Request.AddParameter('grant_type', 'password', pkGETorPOST, []);
         Request.AddParameter('username', UserName, pkGETorPOST, []);
         Request.AddParameter('password', Password, pkGETorPOST, []);
         Request.AddParameter('client_id', 'APIKEY', pkGETorPOST, []);
         Request.AddParameter('client_secret', 'APISecret', pkGETorPOST, []);
solltest du besser so schreiben:

Delphi-Quellcode:
         Request.AddParameter('grant_type', 'password', pkGETorPOST, [poDoNotEncode]);
         Request.AddParameter('username', UserName, pkGETorPOST, [poDoNotEncode]);
         Request.AddParameter('password', Password, pkGETorPOST, [poDoNotEncode]);
         Request.AddParameter('client_id', APIKEY, pkGETorPOST, [poDoNotEncode]);
         Request.AddParameter('client_secret', APISecret, pkGETorPOST, [poDoNotEncode]);
Statt der String-Literale 'APIKEY' und 'APISecret' werden nun die übergebenen Aufruf-Parameter verwendet und das poDoNotEncode sorgt für die korrekte Darstellung der Inhalte.

Da alle Parameter als pkGETorPOST angegeben sind, wird automatisch ein 'application/x-www-form-urlencoded' verwendet und der Body entsprechend zusammengebaut.

Der Body sieht dann so aus: 'grant_type=password&username=user-valid&password=SandboxPasswort2023!&client_id=xxxx xxxxx&client_secret=yyyyyyyyyyyyyyy'
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat