DPD REST API in Ninox integrieren
Hallo Zusammen,
arbeite mich gerade in die DPD API ein. Habe mir dazu unter https://esolutions.dpd.com/entwickler/dpdwebservices.aspx
einen Entwickleraccount erstellt. Wenn man sich einloggt gibt es dort eine Sandbox welche allerdings komplett eingebettet ist.
Hier wird noch viel mit XML gearbeitet. Oldschool wenn ihr mich fragt.
Es gibt auch für jeden Dienst eine Dokumentation:
LoginService V2.0: https://esolutions.dpd.com/dokumente/LoginService_V2_0.pdf
Wenn ich es richtig verstanden habe, muss man sich hier über die getAuth()-Methode ein Token generieren lassen. Welches immer 24h gültig ist.
ShipmentService V3.2: https://esolutions.dpd.com/dokumente/ShipmentService_V3_2.pdf
Hier kann man Pakete anlegen und bekommt DPD-Label als PDF zurück.
ParcelLifeCycleService V2.0: https://esolutions.dpd.com/dokumente/ParcelLifeCycleService_V2_0.pdf
Hier kann man die Sendungsverfolgung ansprechen.
Was ich gerade nicht verstehe ist, wohin die Requests geschickt werden sollen.
In der Doku des LoginService steht auf Seite 4 und 5 je ein Beispiel für die getAuth()-Methode für SOAP und REST
Beim REST API Teil steht dort als URL: <server:port><path>/LoginService/V2_0/getAuth
Was soll das den bedeuten? Muss ich den Request etwa an den lokalen Server der DPD PRINT Software schicken?
Ich habe in Ninox einen Button erstellt mit folgendem Code:
'Tokens Date' := text(format(now(), "DD.MM.YYYY-hh:mm:ss"));
let r := do as server
http("GET", "http://dpd.com/common/service/LoginService/2.0/getAuth", {
delisId: "becht172",
password: "2va8n",
messageLanguage: "de_DE"
}, {})
end;
if r.error then
authResponse := "Fehlermeldung: " + text(r.error)
else
authResponse := "Responsemeldung: " + text(r.result)
end
Als Rückmeldung bekomme ich dann:
Fehlermeldung: {"errno":"ECONNRESET","code":"ECONNRESET","syscall":"read"}
Damit kann ich nicht wirklich was anfangen. Denke ich sende auf die falsche URL... aber ich weiss auch nicht welche die richtige sein soll...
Ich bin im Kontakt mit der IT meines Depots aber das dauert bei denen immer bis die Antworten ;)
Falls einer von euch so eine Integration schon programmiert hat und mir hier etwas Hilfe geben kann, gerne Antworten. Ich bin froh und dankbar für jegliche Unterstützung. :)
5 Antworten
-
Hallo, so wie ich es sehe ist das Beispiel als POST-Request dargestellt, d.h. Deine Zugriffsdaten müssen als Body in einem Post-Request verbaut werden. Wenn Du weiterhin mit GET arbeiten willst, steht da etwas von request-Parameter. Der muß an die URL angehängt werden mit ..getAuth?request={...}. Dabei muß der Teil {} noch mit urlencode(...) umformatiert werden.
Viel Erfolg
-
Hallo Zusammen,
arbeite mich gerade in die DPD API ein. Habe mir dazu unter https://esolutions.dpd.com/entwickler/dpdwebservices.aspx
einen Entwickleraccount erstellt. Wenn man sich einloggt gibt es dort eine Sandbox welche allerdings komplett eingebettet ist.
Hier wird noch viel mit XML gearbeitet. Oldschool wenn ihr mich fragt.
Es gibt auch für jeden Dienst eine Dokumentation:
LoginService V2.0: https://esolutions.dpd.com/dokumente/LoginService_V2_0.pdf
Wenn ich es richtig verstanden habe, muss man sich hier über die getAuth()-Methode ein Token generieren lassen. Welches immer 24h gültig ist.
ShipmentService V3.2: https://esolutions.dpd.com/dokumente/ShipmentService_V3_2.pdf
Hier kann man Pakete anlegen und bekommt DPD-Label als PDF zurück.
ParcelLifeCycleService V2.0: https://esolutions.dpd.com/dokumente/ParcelLifeCycleService_V2_0.pdf
Hier kann man die Sendungsverfolgung ansprechen.
Was ich gerade nicht verstehe ist, wohin die Requests geschickt werden sollen.
In der Doku des LoginService steht auf Seite 4 und 5 je ein Beispiel für die getAuth()-Methode für SOAP und REST
Beim REST API Teil steht dort als URL: <server:port><path>/LoginService/V2_0/getAuth
Was soll das den bedeuten? Muss ich den Request etwa an den lokalen Server der DPD PRINT Software schicken?
Ich habe in Ninox einen Button erstellt mit folgendem Code:
'Tokens Date' := text(format(now(), "DD.MM.YYYY-hh:mm:ss"));
let r := do as server
http("GET", "http://dpd.com/common/service/LoginService/2.0/getAuth", {
delisId: "xxxxxx",
password: "xxxxxxx",
messageLanguage: "de_DE"
}, {})
end;
if r.error then
authResponse := "Fehlermeldung: " + text(r.error)
else
authResponse := "Responsemeldung: " + text(r.result)
endAls Rückmeldung bekomme ich dann:
Fehlermeldung: {"errno":"ECONNRESET","code":"ECONNRESET","syscall":"read"}
Damit kann ich nicht wirklich was anfangen. Denke ich sende auf die falsche URL... aber ich weiss auch nicht welche die richtige sein soll...
Ich bin im Kontakt mit der IT meines Depots aber das dauert bei denen immer bis die Antworten ;)
Falls einer von euch so eine Integration schon programmiert hat und mir hier etwas Hilfe geben kann, gerne Antworten. Ich bin froh und dankbar für jegliche Unterstützung. :)
-
So musste den Beitrag nochmal neu schreiben. Ist nicht so cool wenn man seine Zugangsdaten in Klartext postet. ;)
Vielen Dank für deine Antwort Günther. Habe beides probiert bekomme beides mal die gleiche Rückmeldung.
Aber ich bin mir eben auch gar nicht sicher bei der URL. Falls noch jemand was weiss immer zu posten. Sobald ich was herausfinde schreib ich es hier auch rein.
-
Update: Wie ich jetzt erfahren habe kann man das Token welches jeden Tag generiert werden muss via REST API Requests abfragen den Shipment Service und alle anderen Services kann man jedoch nur via SOAP ansprechen.
Hat schon jemand Erfahrungen mit SOAP-Requests in ninox?
Nachfolgend WSDL-Links:
-
Ist das Problem gelöst? Würde mich sehr interessieren, da ich mich damit jetzt auch wieder auseinandersetzen werde.
Liebe Grüße
Jan
Content aside
- vor 3 JahrenZuletzt aktiv
- 5Antworten
- 2044Ansichten