![]() |
DHL-API mit RESTClient
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:
Delphi-Quellcode:
Das Ergebnis ist eine Fehlermeldung, dass die Authorization fehlgeschlagen ist.
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; Zitat:
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 |
AW: DHL-API mit RESTClient
Auf den ersten Blick denke ich, dass der AuthParameter falsch definiert ist. Versuch es doch mal mit pkHTTPHEADER statt pkGETorPOST.
|
AW: DHL-API mit RESTClient
Funktioniert es denn mit denselben Parametern mit curl?
|
AW: DHL-API mit RESTClient
Hallo Zusammen,
vielen Dank für Eure Antworten! Zitat:
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:
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 |
AW: DHL-API mit RESTClient
Geht es denn auf dem Development Server?
Zitat:
|
AW: DHL-API mit RESTClient
Hi,
Zitat:
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:
result with
curl -X GET https://api-eu.dhl.com/track/shipments?trackingNumber=00341434296527125347 -H DHL-API-Key:xxXXXxxXXXXXxxXX -v
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 |
AW: DHL-API mit RESTClient
Liste der Anhänge anzeigen (Anzahl: 1)
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:
Ich fürchte, dass es ein Problem mit unseren DHL-Berechtigungen gibt. Allerdings steht unter MyApps, dass die App approved und aktiviert ist...
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 |
AW: DHL-API mit RESTClient
Bist Du sicher, dass Du das API-Secret nicht auch mit übergeben musst (klassischerweise ebenfalls als Header, möglicherweise mit einem vorangestellten "Bearer ")?
|
AW: DHL-API mit RESTClient
Nein, dass weiß ich nicht.
Aber wie würde ich bei meiner Function einen Header eingeben? Ich habe es jetzt so versucht:
Delphi-Quellcode:
Leider bekomme ich nach wie vor das Ergebnis:
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;
Code:
Result:{"status":401,"title":"Unauthorized","detail":"Unauthorized for given resource."}
|
AW: DHL-API mit RESTClient
Zitat:
![]() ![]() 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 ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:52 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