AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DHL-API mit RESTClient

Ein Thema von Ykcim · begonnen am 8. Jan 2025 · letzter Beitrag vom 10. Jan 2025
Antwort Antwort
Kas Ob.

Registriert seit: 3. Sep 2023
445 Beiträge
 
#1

AW: DHL-API mit RESTClient

  Alt 8. Jan 2025, 11:02
Hi,

Zitat:
curl -X GET 'https://api-eu.dhl.com/track/shipments?trackingNumber=7777777770' -H 'DHL-API-Key: PasteHere_ConsumerKey'
Nach langem Suchen und Lesen habe ich folgenden gefundenen Code angepasst und versucht auszuführen:
Delphi-Quellcode:
function cUrlCall: string;
begin
  var client := TRESTClient.Create('https://api-eu.dhl.com');
  try
    var request := TRESTRequest.Create(client);
    request.Method := rmGET;
    request.Resource := 'track/shipments';
    request.AddParameter('trackingNumber', '00341434296527125347', pkGETorPOST, []);
    request.AddAuthParameter('DHL-API-Key','XXxxXXXxxxXXXxxx',pkGETorPOST,[poDoNotEncode]);
    request.Execute;
    Result:= request.GetFullRequestURL;
    Result := Result + ' // Result:' + request.Response.Content;
  finally
    client.Free;
  end;
end;
1) Using AddAuthParameter is wrong, From CURL line (-H) it is clearly the "DHL-API-Key: PasteHere_ConsumerKey" should be a header, not a parameter, simple HTTP header.
2) Also you mentioned CURL reporting port is wrong !, then you did copy the link with spaces or something, or you used "'", fix those, and curl will work also
3) Stick to only GET as documented.

here
Code:
curl -X GET https://api-eu.dhl.com/track/shipments?trackingNumber=00341434296527125347 -H DHL-API-Key:xxXXXxxXXXXXxxXX -v
result with
Code:
C:\Users\Kas>curl -X GET https://api-eu.dhl.com/track/shipments?trackingNumber=00341434296527125347 -H DHL-API-Key:xxXXXxxXXXXXxxXX -v
* timeout on name lookup is not supported
* Hostname was NOT found in DNS cache
*   Trying 34.89.220.138...
* Connected to api-eu.dhl.com (34.89.220.138) port 443 (#0)
* successfully set certificate verify locations:
*   CAfile: D:\Program Files\OpenSSL-Win64\bin\curl-ca-bundle.crt
  CApath: none
* SSLv3, TLS handshake, Client hello (1):
* SSLv3, TLS handshake, Server hello (2):
* SSLv3, TLS handshake, CERT (11):
* SSLv3, TLS handshake, Server key exchange (12):
* SSLv3, TLS handshake, Server finished (14):
* SSLv3, TLS handshake, Client key exchange (16):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSLv3, TLS change cipher, Client hello (1):
* SSLv3, TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
* Server certificate:
*        subject: C=DE; ST=Nordrhein-Westfalen; L=Bonn; O=Deutsche Post AG; CN=api.dhl.com
*        start date: 2024-04-02 06:41:20 GMT
*        expire date: 2025-04-02 06:40:20 GMT
*        subjectAltName: api-eu.dhl.com matched
*        issuer: C=DE; O=Deutsche Post AG; CN=DPDHL Global TLS CA - I5
*        SSL certificate verify ok.
> GET /track/shipments?trackingNumber=00341434296527125347 HTTP/1.1
> User-Agent: curl/7.39.0
> Host: api-eu.dhl.com
> Accept: */*
> DHL-API-Key:xxXXXxxXXXXXxxXX
>
< HTTP/1.1 401 Unauthorized
< Date: Wed, 08 Jan 2025 10:57:08 GMT
< Content-Type: application/problem+json
< Content-Length: 81
< Connection: keep-alive
< correlation-id: d3533fc5-376b-41f3-b1ff-5e6eb20a37a3
< content-language: en
< Access-Control-Allow-Origin: https://developer.dhl.com
< Vary: Origin
< Access-Control-Allow-Methods: GET,OPTIONS
< Access-Control-Max-Age: 3628800
< Access-Control-Allow-Headers: Accept-Encoding,Accept-Language,Accept,Authorization,Cache-Control,Content-Language,Content-Length,Content-Type,Correlation-Id,DHL-API-Key,Expires,Host,Last-Modified,Origin,Pragma,Referer,User-Agent,X-Forwarded-For,X-Forwarded-Port,X-Forwarded-Proto,X-Requested-With
< Access-Control-Expose-Headers: Cache-Control,Content-Encoding,Content-Language,Content-Length,Content-Type,Correlation-Id,Expires,Last-Modified,Pragma,Referrer-Policy,Strict-Transport-Security,Vary,X-Content-Type-Options,X-DNS-Prefetch-Control,X-Frame-Options,X-XSS-Protection
< Strict-Transport-Security: max-age=63113904; includeSubDomains; preload
< Expires: Sun, 19 Nov 1978 05:00:00 GMT
< Cache-Control: must-revalidate, no-cache, private
< X-XSS-Protection: 1; mode=block
< Content-Security-Policy: default-src 'self'; script-src 'self'
< X-Content-Type-Options: nosniff
<
{"status":401,"title":"Unauthorized","detail":"Unauthorized for given resource."}* Connection #0 to host api-eu.dhl.com left intact
Kas
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#2

AW: DHL-API mit RESTClient

  Alt 8. Jan 2025, 11:24
Hallo Zusammen,

danke für die Unterstützung!

Ich habe es jetzt auf verschiedene Arten gestestet und bekomme immer die Fehlermeldung mit der Autorisierung...

Code:
U:\>curl https://api-eu.dhl.com/track/shipments?trackingNumber=00341434296527125347 -H DHL-API-Key:xxXXXxxXXXXXxxXX -v
* Host api-eu.dhl.com:443 was resolved.
* IPv6: (none)
* IPv4: 34.89.220.138
*   Trying 34.89.220.138:443...
* Connected to api-eu.dhl.com (34.89.220.138) port 443
* schannel: disabled automatic use of client certificate
* ALPN: curl offers http/1.1
* ALPN: server accepted http/1.1
* using HTTP/1.x
> GET /track/shipments?trackingNumber=00341434296527125347 HTTP/1.1
> Host: api-eu.dhl.com
> User-Agent: curl/8.9.1
> Accept: */*
> DHL-API-Key:xxXXXxxXXXXXxxXX
>
* Request completely sent off
< HTTP/1.1 401 Unauthorized
< Date: Wed, 08 Jan 2025 11:15:35 GMT
< Content-Type: application/problem+json
< Content-Length: 81
< Connection: keep-alive
< correlation-id: 9bc53d30-9a80-476a-8ea9-0696a0e8436b
< content-language: en
< Access-Control-Allow-Origin: https://developer.dhl.com
< Vary: Origin
< Access-Control-Allow-Methods: GET,OPTIONS
< Access-Control-Max-Age: 3628800
< Access-Control-Allow-Headers: Accept-Encoding,Accept-Language,Accept,Authorization,Cache-Control,Content-Language,Content-Length,Content-Type,Correlation-Id,DHL-API-Key,Expires,Host,Last-Modified,Origin,Pragma,Referer,User-Agent,X-Forwarded-For,X-Forwarded-Port,X-Forwarded-Proto,X-Requested-With
< Access-Control-Expose-Headers: Cache-Control,Content-Encoding,Content-Language,Content-Length,Content-Type,Correlation-Id,Expires,Last-Modified,Pragma,Referrer-Policy,Strict-Transport-Security,Vary,X-Content-Type-Options,X-DNS-Prefetch-Control,X-Frame-Options,X-XSS-Protection
< Strict-Transport-Security: max-age=63113904; includeSubDomains; preload
< Expires: Sun, 19 Nov 1978 05:00:00 GMT
< Cache-Control: must-revalidate, no-cache, private
< X-XSS-Protection: 1; mode=block
< Content-Security-Policy: default-src 'self'; script-src 'self'
< X-Content-Type-Options: nosniff
<
{"status":401,"title":"Unauthorized","detail":"Unauthorized for given resource."}* Connection #0 to host api-eu.dhl.com left intact
Ich fürchte, dass es ein Problem mit unseren DHL-Berechtigungen gibt. Allerdings steht unter MyApps, dass die App approved und aktiviert ist...
Angehängte Grafiken
Dateityp: jpg MyApps.jpg (50,2 KB, 23x aufgerufen)
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.666 Beiträge
 
Delphi 12 Athens
 
#3

AW: DHL-API mit RESTClient

  Alt 8. Jan 2025, 11:27
Bist Du sicher, dass Du das API-Secret nicht auch mit übergeben musst (klassischerweise ebenfalls als Header, möglicherweise mit einem vorangestellten "Bearer ")?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#4

AW: DHL-API mit RESTClient

  Alt 8. Jan 2025, 11:35
Nein, dass weiß ich nicht.

Aber wie würde ich bei meiner Function einen Header eingeben? Ich habe es jetzt so versucht:

Delphi-Quellcode:
function cUrlCall: string;
var client : TRESTClient;
      request : TRESTRequest;
begin
   client := TRESTClient.Create('https://api-eu.dhl.com');
   try
      client.SetHTTPHeader('DHL-API-Key','xxXXXxxXXXXXxxXX');
      request := TRESTRequest.Create(client);
      request.Method := rmGet;
      request.Resource := 'track/shipments';
      request.AddParameter('trackingNumber', '00341434296527125347', pkGETorPOST, []);
      request.Execute;
      Result:= request.GetFullRequestURL;
      Result := Result + ' // Result:' + request.Response.Content;
   finally
      client.Free;
   end;
end;
Leider bekomme ich nach wie vor das Ergebnis:
Code:
Result:{"status":401,"title":"Unauthorized","detail":"Unauthorized for given resource."}
Patrick
  Mit Zitat antworten Zitat
Kas Ob.

Registriert seit: 3. Sep 2023
445 Beiträge
 
#5

AW: DHL-API mit RESTClient

  Alt 8. Jan 2025, 11:50
Nein, dass weiß ich nicht.

Aber wie würde ich bei meiner Function einen Header eingeben? Ich habe es jetzt so versucht:

Delphi-Quellcode:
function cUrlCall: string;
var client : TRESTClient;
      request : TRESTRequest;
begin
   client := TRESTClient.Create('https://api-eu.dhl.com');
   try
      client.SetHTTPHeader('DHL-API-Key','xxXXXxxXXXXXxxXX');
      request := TRESTRequest.Create(client);
      request.Method := rmGet;
      request.Resource := 'track/shipments';
      request.AddParameter('trackingNumber', '00341434296527125347', pkGETorPOST, []);
      request.Execute;
      Result:= request.GetFullRequestURL;
      Result := Result + ' // Result:' + request.Response.Content;
   finally
      client.Free;
   end;
end;
Leider bekomme ich nach wie vor das Ergebnis:
Code:
Result:{"status":401,"title":"Unauthorized","detail":"Unauthorized for given resource."}
From DHL documentation i see these :
https://developer.dhl.com/api-refere...de--get-access
https://developer.dhl.com/api-refere...e-docs-section

So the question is did you replaced xxXXXxxXXXXXxxXX with your actual key ?
Try that with curl and don't post your key here.
just try with curl until it does work, also you might want to switch to the DHL test server
https://developer.dhl.com/api-refere...e-docs-section
Kas
  Mit Zitat antworten Zitat
Kas Ob.

Registriert seit: 3. Sep 2023
445 Beiträge
 
#6

AW: DHL-API mit RESTClient

  Alt 8. Jan 2025, 11:56
One more thing, i don't have TRESTClient, so may be someone here can help or suggest how to add HTTP header.
Kas
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
856 Beiträge
 
Delphi 12 Athens
 
#7

AW: DHL-API mit RESTClient

  Alt 8. Jan 2025, 12:07
Hi Kas,

thanks for support. At first: Yes I changed the API-Key and I used the provided Key from DHL. Only for the Forum I changed it to xxXXXxxXXXXXxxXX.

I tried it on the DHL-Page, but also there I get the same result:
Code:
{
  "status": 401,
  "title": "Unauthorized",
  "detail": "Unauthorized for given resource."
}
I wrote an ticket to the support. Maybe the problem is not on my site...
Patrick
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.222 Beiträge
 
Delphi 12 Athens
 
#8

AW: DHL-API mit RESTClient

  Alt 8. Jan 2025, 12:13
Perhaps the rate limit kicks in, if all failed attemps will be counted too?
Maybe tomorrow is another day
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:18 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz