function TForm1.GetDHLAccessToken_Own3(APIKEY, APISecret, UserName, Password:
string;
var URL:
string):
string;
var Client : TRESTClient;
Request : TRESTRequest;
JsResponse: TJSONValue;
response: TCustomRESTResponse;
begin
Client := TRESTClient.Create(
nil);
Request:= TRESTRequest.Create(client);
Try
Try
Client.BaseURL:= '
https://api-sandbox.dhl.com';
Request.Resource:= '
parcel/de/account/auth/ropc/v1/token';
Request.Method := rmPOST;
Request.Params.AddItem('
accept', '
application/json', pkHTTPHEADER, [poDoNotEncode]);
Request.Params.AddItem('
content-type', '
application/x-www-form-urlencoded', pkHTTPHEADER, [poDoNotEncode]);
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, []);
URL:= Request.GetFullRequestURL;
Request.Execute;
if request.Response.StatusCode = 200
then begin
JsResponse:= TJSONObject.ParseJSONValue(request.Response.Content);
Result:= JsResponse.GetValue<
string>('
JWTToken');
end
else begin
ShowMessage(IntToStr(request.Response.StatusCode) + '
' + request.Response.StatusText);
Result:= '
Error: ' + IntToStr(request.Response.StatusCode) + '
' + request.Response.StatusText;
end;
Except
ON e:
Exception do begin
Result:= E.
Message;
ShowMessage('
Keine Daten erhalten');
end;
end;
Finally
Request.Free;
Client.Free;
End;
end;