![]() |
DHL-Webservice nutzen
Ich versuche bislang vergeblich, den DHL-Webservice an den Start zu bekommen. Folgender Effekt: Wenn ich die Datei
![]() über der WSDL-Import importiere, kennt Delphi danach diverse Typen nicht, z.B. CreateShipmentTDRequest. Mir ist jetzt nicht klar, wie ich mich dem Problem nähern kann. brauch ich evtl. ein neueres Delphi (7 Prof. ist am Start) oder sind es Einstellungsfragen oder bekomm ich die Typdeklarationen woanders her? Ich hab auch mal dieses Beispiel durchgespielt: ![]() Es kompiliert, liefert aber bei der Abfrage des Webservice auch Fehler, auch wenn ich nur die mitgelieferten Originalquellcodes kompiliere. Carsten
Delphi-Quellcode:
// ************************************************************************ //
// Die in dieser Datei deklarierten Typen wurden aus Daten generiert, die aus // unten beschriebener WSDL-Datei stammen: // WSDL : https://cig.dhl.de/cig-wsdls/com/dpdhl/wsdl/geschaeftskundenversand-api/1.0/geschaeftskundenversand-api-1.0.wsdl // Codierung : UTF-8 // Codegen : [wfDebug,wfServer,wfUseSerializerClassForAttrs,wfGenTrueGUIDs] // Version : 1.0 // (01.11.2015 23:14:55 - 1.33.2.5) // ************************************************************************ // unit geschaeftskundenversand_api_dhl; interface uses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns; type // ************************************************************************ // // Die folgenden Typen, auf die im WSDL-Dokument Bezug genommen wird, sind in dieser Datei // nicht repräsentiert. Sie sind entweder Aliase(@) anderer repräsentierter Typen oder auf sie wurde Bezug genommen, // aber in diesem Dokument nicht deklariert (!). Die Typen aus letzterer Kategorie // sind normalerweise mit vordefinierten/bekannten XML- oder Borland-Typen verbunden; sie könnten aber auch ein Anzeichen // für ein falsches WSDL-Dokument sein, das einen Schema-Typ nicht deklariert oder importiert.. // ************************************************************************ // // !:CreateShipmentTDRequest - "http://de.ws.intraship" // !:CreateShipmentResponse - "http://de.ws.intraship" // !:Authentification - "http://dhl.de/webservice/cisbase" // !:CreateShipmentDDRequest - "http://de.ws.intraship" // !:DeleteShipmentTDRequest - "http://de.ws.intraship" // !:DeleteShipmentResponse - "http://de.ws.intraship" // !:DeleteShipmentDDRequest - "http://de.ws.intraship" // !:DoManifestTDRequest - "http://de.ws.intraship" // !:DoManifestResponse - "http://de.ws.intraship" // !:DoManifestDDRequest - "http://de.ws.intraship" // !:GetLabelTDRequest - "http://de.ws.intraship" // !:GetLabelResponse - "http://de.ws.intraship" // !:GetLabelDDRequest - "http://de.ws.intraship" // !:BookPickupRequest - "http://de.ws.intraship" // !:BookPickupResponse - "http://de.ws.intraship" // !:CancelPickupRequest - "http://de.ws.intraship" // !:CancelPickupResponse - "http://de.ws.intraship" // !:Version - "http://dhl.de/webservice/cisbase" // !:GetVersionResponse - "http://de.ws.intraship" // !:GetExportDocTDRequest - "http://de.ws.intraship" // !:GetExportDocResponse - "http://de.ws.intraship" // !:GetExportDocDDRequest - "http://de.ws.intraship" // !:GetManifestDDRequest - "http://de.ws.intraship" // !:GetManifestDDResponse - "http://de.ws.intraship" // !:UpdateShipmentDDRequest - "http://de.ws.intraship" // !:UpdateShipmentResponse - "http://de.ws.intraship" // ************************************************************************ // // Namespace : http://de.ws.intrashipservice // soapAction: urn:%operationName% // Transport : http://schemas.xmlsoap.org/soap/http // Stil : document // Bindung : ShipmentServiceSOAP11Binding // Service : ISService_1_0_de // Port : ShipmentServiceSOAP11port0 // URL : https://cig.dhl.de/services/production/soap // ************************************************************************ // ISWSServicePortType = interface(IInvokable) ['{35DA55F0-0197-EA24-95BA-6A40B3CBB3F7}'] function createShipmentTD(const part1: CreateShipmentTDRequest): CreateShipmentResponse; stdcall; function createShipmentDD(const part1: CreateShipmentDDRequest): CreateShipmentResponse; stdcall; function deleteShipmentTD(const part1: DeleteShipmentTDRequest): DeleteShipmentResponse; stdcall; function deleteShipmentDD(const part1: DeleteShipmentDDRequest): DeleteShipmentResponse; stdcall; function doManifestTD(const part1: DoManifestTDRequest): DoManifestResponse; stdcall; function doManifestDD(const part1: DoManifestDDRequest): DoManifestResponse; stdcall; function getLabelTD(const part1: GetLabelTDRequest): GetLabelResponse; stdcall; function getLabelDD(const part1: GetLabelDDRequest): GetLabelResponse; stdcall; function bookPickup(const part1: BookPickupRequest): BookPickupResponse; stdcall; function cancelPickup(const part1: CancelPickupRequest): CancelPickupResponse; stdcall; function getVersion(const part1: Version): GetVersionResponse; stdcall; function getExportDocTD(const part1: GetExportDocTDRequest): GetExportDocResponse; stdcall; function getExportDocDD(const part1: GetExportDocDDRequest): GetExportDocResponse; stdcall; function getManifestDD(const part1: GetManifestDDRequest): GetManifestDDResponse; stdcall; function updateShipmentDD(const part1: UpdateShipmentDDRequest): UpdateShipmentResponse; stdcall; end; implementation type ISWSServicePortTypeImpl = class(TInvokableClass, ISWSServicePortType) public { ISWSServicePortType } function createShipmentTD(const part1: CreateShipmentTDRequest): CreateShipmentResponse; stdcall; function createShipmentDD(const part1: CreateShipmentDDRequest): CreateShipmentResponse; stdcall; function deleteShipmentTD(const part1: DeleteShipmentTDRequest): DeleteShipmentResponse; stdcall; function deleteShipmentDD(const part1: DeleteShipmentDDRequest): DeleteShipmentResponse; stdcall; function doManifestTD(const part1: DoManifestTDRequest): DoManifestResponse; stdcall; function doManifestDD(const part1: DoManifestDDRequest): DoManifestResponse; stdcall; function getLabelTD(const part1: GetLabelTDRequest): GetLabelResponse; stdcall; function getLabelDD(const part1: GetLabelDDRequest): GetLabelResponse; stdcall; function bookPickup(const part1: BookPickupRequest): BookPickupResponse; stdcall; function cancelPickup(const part1: CancelPickupRequest): CancelPickupResponse; stdcall; function getVersion(const part1: Version): GetVersionResponse; stdcall; function getExportDocTD(const part1: GetExportDocTDRequest): GetExportDocResponse; stdcall; function getExportDocDD(const part1: GetExportDocDDRequest): GetExportDocResponse; stdcall; function getManifestDD(const part1: GetManifestDDRequest): GetManifestDDResponse; stdcall; function updateShipmentDD(const part1: UpdateShipmentDDRequest): UpdateShipmentResponse; stdcall; end; function ISWSServicePortTypeImpl.createShipmentTD(const part1: CreateShipmentTDRequest): CreateShipmentResponse; begin { TODO - Implement method createShipmentTD } end; function ISWSServicePortTypeImpl.createShipmentDD(const part1: CreateShipmentDDRequest): CreateShipmentResponse; begin { TODO - Implement method createShipmentDD } end; function ISWSServicePortTypeImpl.deleteShipmentTD(const part1: DeleteShipmentTDRequest): DeleteShipmentResponse; begin { TODO - Implement method deleteShipmentTD } end; function ISWSServicePortTypeImpl.deleteShipmentDD(const part1: DeleteShipmentDDRequest): DeleteShipmentResponse; begin { TODO - Implement method deleteShipmentDD } end; function ISWSServicePortTypeImpl.doManifestTD(const part1: DoManifestTDRequest): DoManifestResponse; begin { TODO - Implement method doManifestTD } end; function ISWSServicePortTypeImpl.doManifestDD(const part1: DoManifestDDRequest): DoManifestResponse; begin { TODO - Implement method doManifestDD } end; function ISWSServicePortTypeImpl.getLabelTD(const part1: GetLabelTDRequest): GetLabelResponse; begin { TODO - Implement method getLabelTD } end; function ISWSServicePortTypeImpl.getLabelDD(const part1: GetLabelDDRequest): GetLabelResponse; begin { TODO - Implement method getLabelDD } end; function ISWSServicePortTypeImpl.bookPickup(const part1: BookPickupRequest): BookPickupResponse; begin { TODO - Implement method bookPickup } end; function ISWSServicePortTypeImpl.cancelPickup(const part1: CancelPickupRequest): CancelPickupResponse; begin { TODO - Implement method cancelPickup } end; function ISWSServicePortTypeImpl.getVersion(const part1: Version): GetVersionResponse; begin { TODO - Implement method getVersion } end; function ISWSServicePortTypeImpl.getExportDocTD(const part1: GetExportDocTDRequest): GetExportDocResponse; begin { TODO - Implement method getExportDocTD } end; function ISWSServicePortTypeImpl.getExportDocDD(const part1: GetExportDocDDRequest): GetExportDocResponse; begin { TODO - Implement method getExportDocDD } end; function ISWSServicePortTypeImpl.getManifestDD(const part1: GetManifestDDRequest): GetManifestDDResponse; begin { TODO - Implement method getManifestDD } end; function ISWSServicePortTypeImpl.updateShipmentDD(const part1: UpdateShipmentDDRequest): UpdateShipmentResponse; begin { TODO - Implement method updateShipmentDD } end; initialization InvRegistry.RegisterInterface(TypeInfo(ISWSServicePortType), 'http://de.ws.intrashipservice', 'UTF-8'); InvRegistry.RegisterInvokableClass(ISWSServicePortTypeImpl); InvRegistry.RegisterHeaderClass(TypeInfo(ISWSServicePortType), Authentification, hmtAll, False); InvRegistry.RegisterHeaderMethod(TypeInfo(ISWSServicePortType), Authentification, 'createShipmentTD', hmtRequest, False); InvRegistry.RegisterHeaderMethod(TypeInfo(ISWSServicePortType), Authentification, 'createShipmentDD', hmtRequest, False); InvRegistry.RegisterHeaderMethod(TypeInfo(ISWSServicePortType), Authentification, 'deleteShipmentTD', hmtRequest, False); InvRegistry.RegisterHeaderMethod(TypeInfo(ISWSServicePortType), Authentification, 'deleteShipmentDD', hmtRequest, False); InvRegistry.RegisterHeaderMethod(TypeInfo(ISWSServicePortType), Authentification, 'doManifestTD', hmtRequest, False); InvRegistry.RegisterHeaderMethod(TypeInfo(ISWSServicePortType), Authentification, 'doManifestDD', hmtRequest, False); InvRegistry.RegisterHeaderMethod(TypeInfo(ISWSServicePortType), Authentification, 'getLabelTD', hmtRequest, False); InvRegistry.RegisterHeaderMethod(TypeInfo(ISWSServicePortType), Authentification, 'getLabelDD', hmtRequest, False); InvRegistry.RegisterHeaderMethod(TypeInfo(ISWSServicePortType), Authentification, 'bookPickup', hmtRequest, False); InvRegistry.RegisterHeaderMethod(TypeInfo(ISWSServicePortType), Authentification, 'cancelPickup', hmtRequest, False); InvRegistry.RegisterHeaderMethod(TypeInfo(ISWSServicePortType), Authentification, 'getExportDocTD', hmtRequest, False); InvRegistry.RegisterHeaderMethod(TypeInfo(ISWSServicePortType), Authentification, 'getExportDocDD', hmtRequest, False); InvRegistry.RegisterHeaderMethod(TypeInfo(ISWSServicePortType), Authentification, 'getManifestDD', hmtRequest, False); InvRegistry.RegisterHeaderMethod(TypeInfo(ISWSServicePortType), Authentification, 'updateShipmentDD', hmtRequest, False); end. |
AW: DHL-Webservice nutzen
D7?Kannst du auch gegen eine neue Delphi-version prüfen? Altere Versionn winf nicht dafür bekannt problemlos zu funkionieren
|
AW: DHL-Webservice nutzen
2005 hat jemand für mich getestet, gleicher Befund.
carsten |
AW: DHL-Webservice nutzen
2005 kann man aber nicht mehr als neue Version bezeichnen. Afaike gab es erst später eine neuimplementierung der webservice-schnittstelle
|
AW: DHL-Webservice nutzen
Hat die vielleicht einer der Mitleser und könnte einmal
![]() durchlaufen lassen? Carsten |
AW: DHL-Webservice nutzen
Liste der Anhänge anzeigen (Anzahl: 1)
Moin,
habe es mit der neusten Delphi Version importiert. Gruß Matze |
AW: DHL-Webservice nutzen
Das kompiliert nach ein paar formalen Anpassungen.
Nur mit SCOPEDENUMS kann Delphi 7 nichts anfangen. Hab die doppelten erstmal umbenannt, mir aber noch nicht weiter angeschaut, welche Konsequenzen das hat. Besten Dank erstmal! Carsten |
AW: DHL-Webservice nutzen
Liste der Anhänge anzeigen (Anzahl: 1)
Ich beiße mir an dem Thema weiter die Zähne aus. Habe jetzt die Testversion des neusten Delphi installiert. Dann hat mir jemand aus der DHL-C#-Demo ein Miniprogramm gebaut, das auch funktioniert. Ich hab Fiddler installiert, um zu schauen, was dort genau zum Server geht (im Bild unten die linke Seite). Hab dann versucht, das in Delphi umzusetzen, es kommt aber nur der rechts zu sehende Teil an.
Wie kann man sich dem problem nähern? Carsten |
AW: DHL-Webservice nutzen
Es gibt da Situationen, wo man einfach von Delphi über eine C#-DLL auf den SOAP-Service zugreift.
Da stellen sich erheblich schneller funktionierende Resultate ein. :stupid: |
AW: DHL-Webservice nutzen
Das hab ich auch schon überlegt...kann nur kein C# und hab eigentlich keine Lust mich extra dafür mit C# zu bewaffnen.
Carsten |
AW: DHL-Webservice nutzen
Meines Wissens nach werden die Endpunkte doch auch als REST-Services bereitgestellt. Spricht irgendwas gegen die Nutzung dieser?
|
AW: DHL-Webservice nutzen
Kannst Du bitte mit ein, zwei Sätzen sagen, wie man da so ungefähr vorgeht? (Hab leider davon noch keine Ahnung - also dioe wsdl-datei muss ja irgendwie ins Spiel kommen).
Carsten |
AW: DHL-Webservice nutzen
Zitat:
Nimmst du REST brauchst du die WSDL-Datei nicht. Dafür gibt es dann eine entsprechende Dokumentation und du baust dir deine Schnittstelle selber zusammen. |
AW: DHL-Webservice nutzen
Hallo,
die älteren Delphis hatten Probleme mit Soap Arrays, da war was. Es gab da auch mehr oder weniger seperate soappatches dazu, die nicht direkt veröffentlicht/verteilt wurden. Wie schon von anderen gesagt: vergiß es mit einem alten Delphi. SoapUI is auch noch ein gutes tool, um die Webservices zu testen und zu vergleichen, was Delphi macht. Den intraship-Webservice für die Sendungserstellung nutze ich nicht, nur andere zur Sendungsverfolgung und Laufzeitermittlung. Aber bei denen gibt es auch noch eine weitere Variante, XML selbst aufzubauen und zu versenden. mit dem XML-Datenbindungswizard bist du da auch recht schnell am Ziel um die notwendigen XMLs aufzubauen und auszulesen. Hier wie ich aber nicht, aber welcher Delphiversion dieser dabei ist. Gruß Frank |
AW: DHL-Webservice nutzen
AFAIK ist der Datenbindungswizard ab der Enterprise-Version dabei.
Probleme mit SOAP gibt es allerdings auch mit der aktuellsten Delphi Version. |
AW: DHL-Webservice nutzen
REST bietet DHL wohl auch an, aber offenbar nur für die Sendungsverfolgung.
Hab keine Infos dazu bei denen gefunden, außer dass sie es anbieten. Carsten |
AW: DHL-Webservice nutzen
Hallo Carsten,
vor dreieinhalb Jahren stand ich vor einem sehr ähnlichen Problem. Der Import der benötigten WSDL-Datei generierte eine 13.000-Zeilen-Unit und sämtliche Bemühungen, die Geschichte ans Laufen zu bringen scheiterten kläglich. Bei mir kam noch erschwerend hinzu, dass ich anfangs keinen Zugriff auf den Server hatte (Zugriff hatten nur meine Kunden) und dass auch noch Client-Zertifikate eingesetzt werden. Dass ich von dem Thema SOAP überhaupt keine Ahnung hatte, machte die Sache auch nicht unbedingt einfacher. Da mir damals die Zeit im Nacken saß, hatte ich Glück, dass mir ein Bekannter ein kleines C-Progrämmchen gebaut hat (nur 25 KB groß), welches das benötigte Zertifikat ausliest, die Verbindung zum Server herstellt und per HTTP-Request die Abfragen erledigt. Ich kann das Programm mit entsprechenden Parametern aufrufen, und dann eine von diesem Programm erstellte Textdatei, die entweder eine Fehlermeldung oder das Resultat der Abfrage (XML) enthält auslesen. Das Auswerten der XML-Daten übernimmt dann ein selbstgebauter Parser. Ich bin froh, den WSDL-Tüddel nicht verwenden zu müssen! Lange Rede, kurzer Sinn: Irgendwann - als ich Zeit dafür hatte - habe ich das C-Programm dann in Delphi umgesetzt. Funktioniert (im Sinne von getestet) mit Windows XP und Windows 7. Falls Du Dich durchringen willst ebenso vorzugehen, kann ich den Code gerne hier einstellen; muss ich nur ein bisschen vorzeigbar aufhübschen und evtl. etwas kommentieren. Ist der DHL-Service eigentlich für jedermann zugänglich oder muss man irgendwie registriert sein? Gruß Michael |
AW: DHL-Webservice nutzen
Da sag ich natürlich nicht nein. Ich geh jetzt evtl. auch erstmal den Weg über C.
Bei DHL muss man sich kostenlos registrieren. ![]() Carsten |
AW: DHL-Webservice nutzen
Zitat:
Bis später. |
AW: DHL-Webservice nutzen
Zitat:
Zitat:
![]() Ich würde dann doch eher zu C# raten oder mir z.B. mit Strongloop einen SOAP-REST-Proxy bauen. |
AW: DHL-Webservice nutzen
C#, sorry
Carsten |
AW: DHL-Webservice nutzen
So, hier nun der angekündigte HTTP-Request-Code:
Delphi-Quellcode:
Bei mir läuft der Code unter Delphi 2010. Wenn Du keine lokalen Zertifikate benötigst, kannst Du die Routine entsprechend anpassen (raus damit). Das Gleiche gilt für die Angabe des Proxys. Auf den Seiten von Microsoft kann man die möglichen Parameter der Funktionen nachlesen.
unit SendHTTPRequest;
interface uses Windows, SysUtils, M_WinHttp, // siehe: http://www.tek-tips.com/faqs.cfm?fid=7493 JwaWinCrypt; // siehe: http://jedi-apilib.sourceforge.net implementation function SendRequest(Host : String; Service : String; Proxy : String; SoapAction : WideString; RequestData : UTF8String; CertName : String; FName : String; var ErrCode : Integer; var ErrText : String):Boolean; var hConnect, hRequest, hSession : HInternet; UserAgent : WideString; dwContext, BytesRead, BytesWritten, HeaderLen, OptionLen : Cardinal; szBuffer : array[1..32768] of byte; DownloadSize : Int64; FHandle, I : Integer; FSizeRead : DWord; hStore : HCERTSTORE; pCert : PCertContext; S : String; procedure CleanUp; begin if hSession <> nil then WinHttpCloseHandle(hSession); if hConnect <> nil then WinHttpCloseHandle(hConnect); if hRequest <> nil then WinHttpCloseHandle(hRequest); CloseHandle(FHandle); end; begin Result:=False; ErrCode:=0; ErrText:=''; hConnect := nil; hRequest := nil; UserAgent:='Mozilla/5.0 (MSIE 9.0; Windows NT 6.1; Trident/5.0)'; FHandle:=FileCreate(FName); if (FHandle < 0) then begin ErrCode:=GetLastError; ErrText:='Can not create file'; Exit; end; hSession := WinHttpOpen(PWideChar(UserAgent), WINHTTP_ACCESS_TYPE_NAMED_PROXY, PWideChar(WideString(Proxy)), WINHTTP_NO_PROXY_BYPASS, 0); if (hSession = NIL) then begin ErrCode:=GetLastError; ErrText:=WinHttpSysErrorMessage(ErrCode); Exit; end; hConnect:=WinHttpConnect(hSession, PWideChar(WideString(Host)), INTERNET_DEFAULT_HTTPS_PORT, 0); if (hConnect = NIL) then begin ErrCode:=GetLastError; ErrText:=WinHttpSysErrorMessage(ErrCode); CleanUp; Exit; end; hRequest:=WinHttpOpenRequest(hConnect, PWideChar(WideString('POST')), PWideChar(WideString(Service)), nil, WINHTTP_NO_REFERER, WINHTTP_DEFAULT_ACCEPT_TYPES, WINHTTP_FLAG_SECURE or WINHTTP_FLAG_ESCAPE_DISABLE{0}); if (hRequest = NIL) then begin ErrCode:=GetLastError; ErrText:=WinHttpSysErrorMessage(ErrCode); CleanUp; Exit; end; // Zertifikatspeicher (MY) öffnen... hStore:=CertOpenStore(CERT_STORE_PROV_SYSTEM, 0, 0, CERT_SYSTEM_STORE_CURRENT_USER, WideChar(WideString('MY'))); if (hStore = NIL) then begin ErrCode:=GetLastError; ErrText:=WinHttpSysErrorMessage(ErrCode); CleanUp; Exit; end; // Zertifikat lesen... pCert:=CertFindCertificateInStore(hStore, X509_ASN_ENCODING, 0, CERT_FIND_SUBJECT_STR, PWideChar(WideString(CertName)), NIL); if (pCert = NIL) then begin ErrCode:=99; ErrText:='Error CertFindCertificateInStore'; CleanUp; Exit; end; // und dem Request als Option hinzufügen... if not WinHttpSetOption(hRequest, WINHTTP_OPTION_CLIENT_CERT_CONTEXT, pCert, SizeOf(CERT_CONTEXT)) then begin ErrCode:=GetLastError; ErrText:=WinHttpSysErrorMessage(ErrCode); CleanUp; Exit; end; // Zertifikatspeicher schließen... CertFreeCertificateContext(pCert); CertCloseStore(hStore, 0); // Requestdaten vorbereiten... dwContext:=0; FillChar(szBuffer, SizeOf(szBuffer), 0); I:=1; OptionLen:=Length(RequestData); repeat szBuffer[I]:=Ord(RequestData[I]); Inc(I); until (I > OptionLen); S:=''; for I:=1 to Length(RequestData) do S:=S+Char(szBuffer[I]); HeaderLen:=Length(SoapAction) * 2; OptionLen:=Length(RequestData); // und abschicken... if not WinHttpSendRequest(hRequest, WINHTTP_NO_ADDITIONAL_HEADERS, 0, @szBuffer, OptionLen, OptionLen, dwContext) then begin ErrCode:=GetLastError; ErrText:=WinHttpSysErrorMessage(ErrCode); CleanUp; Exit; end; // Antwort holen... if not WinHttpReceiveResponse(hRequest, nil) then begin ErrCode:=GetLastError; ErrText:=WinHttpSysErrorMessage(ErrCode); CleanUp; Exit; end; // und lesen... FillChar(szBuffer, SizeOf(szBuffer), 0); if not WinHttpReadData(hRequest, @szbuffer, sizeof(szbuffer), BytesRead) then begin ErrCode:=GetLastError; ErrText:=WinHttpSysErrorMessage(ErrCode); CleanUp; Exit; end; // und in Ausgabedatei schreiben... while (BytesRead > 0) do begin WriteFile(FHandle, szBuffer, BytesRead, BytesWritten, nil); FillChar(szBuffer, SizeOf(szBuffer), 0); if not WinHttpReadData(hRequest, @szbuffer, sizeof(szbuffer), BytesRead) then begin ErrCode:=GetLastError; ErrText:=WinHttpSysErrorMessage(ErrCode); CleanUp; Exit; end; end; CleanUp; Result:=True; end; { SendRequest } if SendRequest('dhl.serviceportal.net', // Host, 'service/soap/dhl/', // Service '12.174.13.120:8080', // Proxy, 'CreateShipmentResponse', // SoapAction, '...', // RequestData '...', // Fingerprint des Zertifikats 'c:\soap\response.xml', // Antwortdatei ErrCode, // Fehlercode ErrText) // Fehlertext then begin ... end; Viel Erfolg! Gruß Michael |
AW: DHL-Webservice nutzen
Ganz herzlichen Dank!
Ich hab eben entdeckt, dass die Post auch so einen Webservice betreibt. Der würde für mich sogar noch besser passen, da ich nur Briefe frankieren will und mich nur auf DHL gestützt hatte, weil die Post erst ab 20.000 Vorgänge o.ä. pro Jahr einen entsprechenden Profi-Service anbietet. Offenbar gibt es das aber doch auch "in klein", wie hier beschrieben: ![]() WSDL-Import hat erstmal geklappt. Weitere Doku dazu hab ich noch nicht gefunden. Kennt sich zufällig jemand damit aus? Carsten |
AW: DHL-Webservice nutzen
Ein Nachtrag dazu: Hab inzwischen rausbekommen, dass die Post das Thema wohl extrem schlecht unterstützt. Allein ein login zur Nutzung dauert zig Wochen. Support gibt es selbst für Großabnehmer praktisch gar nicht.
Es gibt aber wackere Dienstleister, die die Hürde überwunden haben, neben dem oben verlinkten auch billbee.de, die einen einfachen zu handhabenden Webservice mit Support für ganz vernünftige Konditionen anbieten. Carsten |
AW: DHL-Webservice nutzen
Zitat:
- Intraship und die nächste Version mit den tollen Namen: Versenden |
AW: DHL-Webservice nutzen
Hallo,
dachte immer Intraship is immer DHL-Express und für nat. und internationale Pakete. Dass das intraship auch die DHL-Paket Schiene unterstützt, ist erst vor kurzem umgesetzt worden. Für mich ist das Express das ursprüngliche DHL und Paket ist für mich die ursprüngliche Post. Und das ist bei DHL noch schön getrennt. Das intraship kenn ich nicht, wir haben eine andere Lösung von DHL. Denke aber nicht, dass du mit intraship klassische Briefe versendest bekommst, dafür ist das nicht gemacht. Mit Briefe frankieren kenne ich mich nicht aus, was musst Du da machen? Ich komme eher aus dem Express-Bereich, da kann ich nicht behaupten, keinen Support und keine ordentliche Doku zu bekommen. Du musst halt an die Techniker rankommen , den Draht versorgt Dir aber dein Verkäufer. Die haben immer Interesse, die Sendungen elektronisch übermittelt zu bekommen. Bevor Du hier völlig ins Blaue räts, würde ich erstmal mit eurem zuständigen DHL-Verkäufer reden und absprechen was ihr wollt und was ihr braucht. gruß Frank |
AW: DHL-Webservice nutzen
Intraship ist das Webportal mit dem fast alles geht, dann gibt es noch Easylog für Großkunden ...
Alles von DHL wird aktuell zusammengeführt zu "Versenden" und dadurch wird alles andere ersetzt. Das ist ein reines Onlineportal ähnlich Intraship. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:17 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