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
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.663 Beiträge
 
Delphi 12 Athens
 
#1

AW: DHL-API mit RESTClient

  Alt 8. Jan 2025, 15:50
Sollten bei Curls unter Windows nicht Double-Quotes verwendet werden?
Code:
curl -X GET "https://api-eu.dhl.com/track/shipments?trackingNumber=00341434296527125347" -H "DHL-API-Key:xxXXXxxXXXXXxxXX"
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  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, 16:05
Zitat:
Sollten bei Curls unter Windows nicht Double-Quotes verwendet werden?
Mit Hochkomma bekommt man eine Fehlermeldung:
Code:
curl: (3) URL rejected: Port number was not a decimal number between 0 and 65535
Bei Double-Quotes wird es korrekt ausgeführt. Wenn man gar keine Quotes verwendet wird es auch korrekt ausgeführt.
Wobei korrekt ausgeführt bedeutet:
Code:
{"status":401,"title":"Unauthorized","detail":"Unauthorized for given resource."}
Patrick
  Mit Zitat antworten Zitat
shebang

Registriert seit: 7. Feb 2020
144 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: DHL-API mit RESTClient

  Alt 8. Jan 2025, 16:30
Wenn das hier funktioniert, dann ist wohl dein API-Key nicht korrekt:
Code:
curl https://api-eu.dhl.com/track/shipments?trackingNumber=0 -H DHL-API-Key:demo-key
  Mit Zitat antworten Zitat
hstreicher

Registriert seit: 21. Nov 2009
223 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: DHL-API mit RESTClient

  Alt 8. Jan 2025, 17:18
Hello,

DHL also offers its own client for generating the labels
dhl pollingclient

it periodically checks for/reads a simple csv file with the address and parcel data (sizes, weight (customs codes for foreign shipments))
and returns the file with the tracking number so it can be read into your system


regards
hannes
  Mit Zitat antworten Zitat
TUhr

Registriert seit: 25. Sep 2021
25 Beiträge
 
#5

AW: DHL-API mit RESTClient

  Alt 8. Jan 2025, 21:50
Hallo,

ich habe das vor einigen Jahren mal in C++ Builder realisiert über die HTTP Schnittstelle und SOAP.
Meine Anwendung erstellt allerdings nur Labels (National) und prüft Adressen.

Wenn da Interesse besteht bitte Bescheid geben.

MfG
Thorsten Uhr
  Mit Zitat antworten Zitat
Ykcim

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

AW: DHL-API mit RESTClient

  Alt 9. Jan 2025, 07:37
Guten Morgen zusammen,

@Thorsten, vielen Dank für das Angebot. Da hätte ich großes Interesse dran. Ich muss zwar eine internationale Schnittstelle bauen, aber ich denke, es wird sehr hilfreich sein!
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch
Online

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

AW: DHL-API mit RESTClient

  Alt 9. Jan 2025, 10:24
Wenn das hier funktioniert, dann ist wohl dein API-Key nicht korrekt:
Code:
curl https://api-eu.dhl.com/track/shipments?trackingNumber=0 -H DHL-API-Key:demo-key
Das ist definitiv eine gute Idee:

Damit kann man auch ein Delphi-Programm füttern und testen, ob es prinzipiell funktioniert.

Ich hatte auf der Seite von DHL gar nichts zu diesem Demo-Datensatz und Demo-Key gelesen, aber ich bin auch nicht besonders tief eingestiegen, da ich aktuell keine Verwendung dafür habe.
Thomas Mueller
  Mit Zitat antworten Zitat
Ykcim

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

AW: DHL-API mit RESTClient

  Alt 9. Jan 2025, 13:59
Das habe ich getestet - diese Möglichkeit hatte ich nicht gesehen.
Hier bekomme ich über CURL ein Ergebnis geliefert.

Ich vermute, dass mein Key nicht zu der API passt. Für die API würde ich einen housebill Code benötigen. Eine Sendungsnummer kann man darüber wohl auch ermitteln, aber das hat nicht funktioniert. Ich habe jetzt weitere API's der App hinzugefügt, die aber noch nicht alle freigeschaltet wurden.

Wenn ich schlauer bin, melde ich mich wieder!

Vielen Dank
Patrick
Patrick
  Mit Zitat antworten Zitat
TUhr

Registriert seit: 25. Sep 2021
25 Beiträge
 
#9

AW: DHL-API mit RESTClient

  Alt 9. Jan 2025, 22:25
Hallo,

Diese Datei als Stream laden und die Platzhalter in eckigen Klammern mit Deinen Parametern ersetzen :

Code:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cis="http://dhl.de/webservice/cisbase" xmlns:ns="http://dhl.de/webservices/businesscustomershipping/3.0">
   <soapenv:Header>
      <cis:Authentification>
         <cis:user>[Benutzername]</cis:user>
         <cis:signature>[Passwort]</cis:signature>
      </cis:Authentification>
   </soapenv:Header>
   <soapenv:Body>
      <ns:CreateShipmentOrderRequest>
         <ns:Version>
            <majorRelease>3</majorRelease>
            <minorRelease>1</minorRelease>
         </ns:Version>
         <ShipmentOrder>
            <sequenceNumber></sequenceNumber>
            <Shipment>
               <ShipmentDetails>
                  <product>V01PAK</product>
                  <cis:accountNumber>[Produkt]</cis:accountNumber>
                  <customerReference>[Sendungsreferenz]</customerReference>
                  <shipmentDate>[Sendungsdatum]</shipmentDate>
                  <costCentre></costCentre>
                  <ShipmentItem>
                     <weightInKG>[Gewicht]</weightInKG>
                  </ShipmentItem>
                  <Service>
                  </Service>
               </ShipmentDetails>
               <Shipper>
                  <Name>
                     <cis:name1>Xxxxxxx GmbH</cis:name1>
                     <cis:name2></cis:name2>
                     <cis:name3></cis:name3>
                  </Name>
                  <Address>
                     <cis:streetName>Xxxxxxstrasse</cis:streetName>
                     <cis:streetNumber>4</cis:streetNumber>
                     <cis:zip>53225</cis:zip>
                     <cis:city>Bonn</cis:city>
                     <cis:Origin>
                        <cis:country></cis:country>
                        <cis:countryISOCode>DE</cis:countryISOCode>
                     </cis:Origin>
                  </Address>
                  <Communication>
                     <!--Optional:-->
                     <cis:phone>+49228xxxxxx</cis:phone>
                     <cis:email>info@xxxxxx.de</cis:email>
                     <!--Optional:-->
                     <cis:contactPerson>Kontaktperson Absender</cis:contactPerson>
                  </Communication>
               </Shipper>
               <Receiver>
                  <cis:name1>[EmpfaengerName1]</cis:name1>
                  <Address>
                     <cis:name2>[EmpfaengerName2]</cis:name2>
                     <cis:name3>[EmpfaengerName3]</cis:name3>
                     <cis:streetName>[EmpfaengerStrasse]</cis:streetName>
                     <cis:streetNumber>[EmpfaengerHausnummer]</cis:streetNumber>
                     <cis:zip>[EmpfaengerPLZ]</cis:zip>
                     <cis:city>[EmpfaengerOrt]</cis:city>
                     <cis:Origin>
                        <cis:country></cis:country>
                        <cis:countryISOCode>DE</cis:countryISOCode>
                     </cis:Origin>
                  </Address>
               </Receiver>
            </Shipment>
            <PrintOnlyIfCodeable active="1"/>
         </ShipmentOrder>
         <labelResponseType>URL</labelResponseType>
         <groupProfileName></groupProfileName>
         <labelFormat>910-300-610</labelFormat>
         <labelFormatRetoure></labelFormatRetoure>
         <combinedPrinting>0</combinedPrinting>
      </ns:CreateShipmentOrderRequest>
   </soapenv:Body>
</soapenv:Envelope>
Der folgende Code ist zwar in C++, aber ich denke den kannst Du einfach in Delphi übersetzen :

Code:
IdHTTP1->Request->BasicAuthentication=true;
IdHTTP1->Request->Username=ApplicationsIDEdit->Text;
IdHTTP1->Request->Password=ApplicationsTokenEdit->Text;
IdHTTP1->Request->CustomHeaders->Clear();
IdHTTP1->Request->CustomHeaders->Add("SOAPAction: \"urn:createShipmentOrder\"");
Ergebnis=IdHTTP1->Post("https://cig.dhl.de/services/production/soap",StreamData);
Als Ergebnis erhälst Du die Paketnummer und einen Downloadurl des Labels.

MfG
Thorsten Uhr
  Mit Zitat antworten Zitat
Ykcim

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

AW: DHL-API mit RESTClient

  Alt 10. Jan 2025, 08:58
Hallo Thorsten,
klasse! Vielen Dank!
Patrick
  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 15:16 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