AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

DHL API über winhttp

Offene Frage von "Signum"
Ein Thema von Signum · begonnen am 5. Jan 2016 · letzter Beitrag vom 9. Jan 2016
Antwort Antwort
Seite 1 von 2  1 2   
Signum

Registriert seit: 11. Sep 2008
5 Beiträge
 
Delphi 2007 Professional
 
#1

DHL API über winhttp

  Alt 5. Jan 2016, 07:46
Hallo,

ich versuche die DHL Soap API für den Paketversand über die winhttp.dll anzusprechen.

Bei Requests, die mit SoapUI einen Response erhalten, erhalte ich bei einem Aufruf über WinHttpSendRequest keine Antwort. WinHttpReceiveResponse und WinHttpReadData liefern nur 0 Bytes.

Wenn ich den Status nach WinHttpReceiveResponse abfrage, erhalte ich eine 401, obwohl ich https verwende.

Es erfolgen auch keinerlei Fehlermeldungen, die CIG-Authentifizierung ist scheinbar auch erfolgreich, denn sonst erhalte ich eine signifikante Fehlermeldung.

Ich habe schon mit versucht mit WinHttpSetOption und WINHTTP_OPTION_SECURE_PROTOCOLS auf TLS 1 umzustellen, das hat aber auch nichts gebracht. Der

DHL Support verwies auf die neuen Verschlüsselungsverfahren und gibt eine Reihe von Cipher Suites vor, nur wie kann man die bei WinHTTP vorgeben?

Hat jemand hier eine aktuelle funktionierende Anbindung zu DHL und kann mir da einige Tipps geben. Älter Lösungen habe ich hier schon gesehen, aber die funktionieren leider nicht mehr.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
2.908 Beiträge
 
Delphi 2009 Professional
 
#2

AW: DHL API über winhttp

  Alt 5. Jan 2016, 08:11
Bei Requests, die mit SoapUI einen Response erhalten, erhalte ich bei einem Aufruf über WinHttpSendRequest keine Antwort. WinHttpReceiveResponse und WinHttpReadData liefern nur 0 Bytes.
Sieht aus als ob es ein spezielles Problem von WinHTTP ist. Aus dem normalen Webbrowser kann die SOAP Endpunkt Adresse vermutlich problemlos erreicht werden?

Die Cipher Suites des HTTPS Servers von DHL kann man z.B. unter https://www.ssllabs.com/ssltest/ abfragen, die Diagnose liefert auch Hinweise zu speziellen Inkompatibilitäten.

Wir greifen auch auf DHL zu, allerdings gibt es verschiedene Web Services. Welche Endpunkt Adresse ist es konkret?
Michael Justin
  Mit Zitat antworten Zitat
Signum

Registriert seit: 11. Sep 2008
5 Beiträge
 
Delphi 2007 Professional
 
#3

AW: DHL API über winhttp

  Alt 5. Jan 2016, 08:55
Hallo,

zur Zeit gehe ich über https://cig.dhl.de/services/sandbox/soap und teste das ganze mit einem CreateShipmentDDRequest

Ich hab mir auch die Komponente über WSDL erzeugt, aber noch nicht weiter getestet.

Da ich das ganze später auch in eine externen Prozess in C++ auslagern will, wäre mir winhttp lieber.

Wie sprecht Ihr den den Web-Service an?
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#4

AW: DHL API über winhttp

  Alt 5. Jan 2016, 09:05
Wie ist die API denn abgesichert? 401 könnte auch der Start einer Digest-Authentication sein. Dort wird die Challenge mit einem 401 geschickt und der Server wartet anschließend auf die Response.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
2.908 Beiträge
 
Delphi 2009 Professional
 
#5

AW: DHL API über winhttp

  Alt 5. Jan 2016, 09:21
Wie sprecht Ihr den den Web-Service an?
Der Endpunkt https://nolb.dhl.de/nextt-online-bus...bpublicservlet wird über Indy's HTTP Komponente abgefragt.

Der Hinweis auf den 401 Status Code sehe ich als "besten Kandidaten" für die Fehlersuche. 401 ist allerdings nicht Digest-spezfisch. Es kan auch eine einfache Basic-Uathentication sein. Bei Aufruf des Endpunkts in meinem Browser erscheint ein Basic Auth Logindialog und im HTTP Antwortheader steht

WWW-Authenticate:"Basic realm="CIG Sandbox Services""
Michael Justin
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
2.908 Beiträge
 
Delphi 2009 Professional
 
#6

AW: DHL API über winhttp

  Alt 5. Jan 2016, 09:23

zur Zeit gehe ich über https://cig.dhl.de/services/sandbox/soap und teste das ganze mit einem CreateShipmentDDRequest
Versuche einfach mal die Credentials direkt in der URL anzugeben

https://username:passwort@cig.dhl.de...s/sandbox/soap

(Siehe http://stackoverflow.com/questions/2...and-encryption)
Michael Justin
  Mit Zitat antworten Zitat
Signum

Registriert seit: 11. Sep 2008
5 Beiträge
 
Delphi 2007 Professional
 
#7

AW: DHL API über winhttp

  Alt 5. Jan 2016, 09:45
Die Zugangsdaten setze ich ja schon mit

WinHttpSetCredentials (hRequest, WINHTTP_AUTH_TARGET_SERVER, WINHTTP_AUTH_SCHEME_BASIC, UserName, Password, nil);

Wenn ich da falsche Daten angebe erfolgt auch eine klare Fehlermeldung im Response.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
2.908 Beiträge
 
Delphi 2009 Professional
 
#8

AW: DHL API über winhttp

  Alt 5. Jan 2016, 09:51
Die Zugangsdaten setze ich ja schon mit

WinHttpSetCredentials (hRequest, WINHTTP_AUTH_TARGET_SERVER, WINHTTP_AUTH_SCHEME_BASIC, UserName, Password, nil);

Wenn ich da falsche Daten angebe erfolgt auch eine klare Fehlermeldung im Response.
Ok, als nächstes würde ich dann Fiddler2 als Proxy in die Verbindung einfügen und sehen, was sich bei WinHTTP anders verhält als bei SoapUI. Also beide Request / Responseprotokolle vergleichen.
Michael Justin
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#9

AW: DHL API über winhttp

  Alt 5. Jan 2016, 14:06
mhh bei Basic müsste Pre-Authentication eigentlich funktionieren. Fiddler ist auf jeden Fall das Mittel der Wahl.

Wenn man nicht mit Pre-Authentication arbeitet, dann sieht der Workflow für die Anmeldung laut MSDN übrigens so aus:
Zitat:
A typical WinHTTP application completes the following steps in order to handle authentication.
Request a resource with WinHttpOpenRequest and WinHttpSendRequest.
Check the response headers with WinHttpQueryHeaders.
If a 401 or 407 status code is returned indicating that authentication is required, call WinHttpQueryAuthSchemes to find an acceptable scheme.
Set the authentication scheme, username, and password with WinHttpSetCredentials.
Resend the request with the same request handle by calling WinHttpSendRequest.
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#10

AW: DHL API über winhttp

  Alt 6. Jan 2016, 12:50
Aus purer Neugier: Warum eigentlich über WinHTTP?
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 09:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf