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
Seite 1 von 4  1 23     Letzte »    
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
844 Beiträge
 
Delphi 10.4 Sydney
 
#1

DHL-API mit RESTClient

  Alt 8. Jan 2025, 11:06
Hallo Zusammen,
wir benötigen eine Möglichkeit, DHL-Labels via Software zu erstellen. Das ist für mich komplettes Neuland daher versuche ich im ersten Schritt, die Sendungsverfolgung über die API zu realisieren.

Ich habe mich registriert, die App hinzugefügt und habe meinen API-Key.

In der Dokumentation steht folgende CURL als Beispiel:
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;
Das Ergebnis ist eine Fehlermeldung, dass die Authorization fehlgeschlagen ist.

Zitat:
https://api-eu.dhl.com/track/shipmen...xxXXXxxxXXXxxx // Result:{"status":401,"title":"Unauthorized","detai l":"Unauthorized for given resource."}
(TrackingNr und DHL-API-Key sind für die Frage gefakt)

Ich habe das gleiche Problem auch, wenn ich versuche, dass Ganze mit dem RESTDebugger auszuführen.

Kann mir jemand sagen, was ich falsch mache?

Vielen Dank Patrick
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: DHL-API mit RESTClient

  Alt 8. Jan 2025, 11:28
Auf den ersten Blick denke ich, dass der AuthParameter falsch definiert ist. Versuch es doch mal mit pkHTTPHEADER statt pkGETorPOST.
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
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.638 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

AW: DHL-API mit RESTClient

  Alt 8. Jan 2025, 11:31
Funktioniert es denn mit denselben Parametern mit curl?
Thomas Mueller
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
844 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: DHL-API mit RESTClient

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

vielen Dank für Eure Antworten!
Zitat:
Versuch es doch mal mit pkHTTPHEADER statt pkGETorPOST.
Das hatte ich zwischenzeitlich bereits versucht, aber leider ohne Erfolg! Was mich gewundert hatte, dass der Request mir den API-Key dann nicht mehr anzeigt...

Code:
request.GetFullRequestURL: https://api-eu.dhl.com/track/shipments?trackingNumber=00341434296527125347 
request.Response.Content: {"status":401,"title":"Unauthorized","detail":"Unauthorized for given resource."}

Zitat:
Funktioniert es denn mit denselben Parametern mit curl?
Das ist eine gute Frage, die ich leider noch nicht beantworten kann.
Ich habe noch nie mit CURL gearbeitet. Habe es mir heruntergeladen, weiß aber nicht, wie ich es anwenden muss, damit ich den Zugang prüfen kann...

Wenn ich den String in CMD eingebe bekomme ich folgende Fehlermeldung:
Code:
U:\>curl -X GET 'https://api-eu.dhl.com/track/shipments?trackingNumber=00341434296527125347' -H 'DHL-API-Key:xxXXXxxXXXXXxxXX'
curl: (3) URL rejected: Port number was not a decimal number between 0 and 65535
Patrick

Geändert von Ykcim ( 8. Jan 2025 um 11:52 Uhr)
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.135 Beiträge
 
Delphi 12 Athens
 
#5

AW: DHL-API mit RESTClient

  Alt 8. Jan 2025, 12:02
Geht es denn auf dem Development Server?
Zitat:
servers:
- url: https://api-test.dhl.com/track
description: Development server
- url: https://api-eu.dhl.com/track
description: Production server
  Mit Zitat antworten Zitat
Kas Ob.

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

AW: DHL-API mit RESTClient

  Alt 8. Jan 2025, 12: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
844 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: DHL-API mit RESTClient

  Alt 8. Jan 2025, 12: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...
Miniaturansicht angehängter Grafiken
myapps.jpg  
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

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

AW: DHL-API mit RESTClient

  Alt 8. Jan 2025, 12: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
844 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: DHL-API mit RESTClient

  Alt 8. Jan 2025, 12: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
370 Beiträge
 
#10

AW: DHL-API mit RESTClient

  Alt 8. Jan 2025, 12: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
Antwort Antwort
Seite 1 von 4  1 23     Letzte »    


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 00:15 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 by Thomas Breitkreuz