Einzelnen Beitrag anzeigen

Maekkelrajter

Registriert seit: 8. Mär 2017
Ort: Köln
118 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: RESTRequest - Anfrage klappt nicht: "Bad Request"

  Alt 27. Nov 2020, 10:41
Heureka!
Ich bin ja hartnäckig, ja geradezu gnadenlos, wenn es darum geht, ein Problem, in das ich mich einmal verbissen habe, doch noch zu lösen. Nach unzähligen Versuchen und dem Studium etlicher Beiträge im DP-Archiv und anderer Quellen im Netz, wo es immer wieder Hinweise auf mögliche Fehlerquellen gab, hat es dann wirklich geklappt. Ich war tatsächlich etwas überrascht, als irgendwann das 'Request.Execute' ohne Fehlermeldung durchlief und das korrekte Ergebnis zu sehen war.
Hier der Code:
Delphi-Quellcode:
Function TSpManager.GetRefreshToken(Quiet: Boolean):Boolean;
  var s,Encoded: string;
       Client: TRestClient;
       Request: TRESTRequest;
       Response: TRestResponse;
       MValue:TJSONValue;
begin
  result:= false;
  Client := TRestClient.Create('https://accounts.spotify.com/api/token');
  Response := TREStResponse.Create(NIL);
  Request := TRESTRequest.Create(NIL);
  try
    s := stcf.AccessData.clientID + ':' + stcf.AccessData.clientsecret;
    Encoded:= replacestr(TNetEncoding.Base64.Encode(s),#13#10,''); // Zeilen-Umbruch entfernen
    Client.contentType := 'application/x-www-form-urlencoded';
    Request.Client := Client;
    Request.Response := Response;
    Request.Method := rmPOST;
    Request.AddParameter('Authorization','Basic ' + encoded, pkHTTPHEADER, [poDoNotEncode]);
    Request.AddParameter('grant_type','refresh_token', pkGETorPOST, [poDoNotEncode]);
    Request.AddParameter('refresh_token',stcf.AccessData.RefreshToken, pkGETorPOST, [poDoNotEncode]);
    Request.Execute;
    MValue := response.JSONValue;
    If MValue <> NIL Then
    begin
      [...]
    end;
  finally
    FreeAndNIL(Request);
    FreeAndNIL(Response);
    FreeAndNIL(Client);
  end;
end;
Gruß LP
  Mit Zitat antworten Zitat