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.Params.AddItem('
client_id', APIKEY, pkGETorPOST, [poDoNotEncode]);
Request.Params.AddItem('
client_secret', APISecret, pkGETorPOST, [poDoNotEncode]);
Request.Params.AddItem('
username', UserName, pkGETorPOST, [poDoNotEncode]);
Request.Params.AddItem('
password', Password, pkGETorPOST, [poDoNotEncode]);
Request.AddParameter('
grant_type', '
password', pkGETorPOST, [poDoNotEncode]);
URL:= Request.GetFullRequestURL;
Request.Execute;
if request.Response.StatusCode = 200
then begin
JsResponse:= TJSONObject.ParseJSONValue(request.Response.Content);
Result:= JsResponse.GetValue<
string>('
access_token');
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;