Ok, das ging jetzt doch schneller als gedacht.
Keine Ahnung, ob mein Vorgehen hier jetzt sinnvoll ist oder nicht:
Irgendwo gibt es ja 'ne
Url https:/wasauchimmer.xyz/und dann mehr oder weniger weiteres.
Die betreffende Adresse ist
https://onlinetools.ups.com/webservices/Ship
Nimm bitte dieses https:/wasauchimmer.xyz/ und gib es auf dem nicht funktionierenden Rechner im Internetexplorer ein.
Was passiert dann?
'ne sinnvoile Anzeige, 'ne Fehlermeldung, oder kommt dort dann auch der Zertifikatsfehler?
Folgt dem eventuell ein Dialog, in dem Du entscheiden kannst, ob das Zertifikat importiert werden soll, verworfen oder was auch immer?
Hast Du auf dem Problemrechner auch noch 'nen anderen Browser? Was macht der bei der Eingabe der
Url? Alles ok oder irgendeine Fehlermeldung?
"Leider" funktioniert das tadellos. Im Internet Explorer wird die Seite fehlerfrei dargestellt, wie auf dem funktionierenden System (und auch in anderen Browsern). Man erhält dann eine Seite, auf der die folgenden Daten angegeben sind (das ist von UPS so gewollt und in der Dokumentation auch so beschrieben).
Service Name: ShipWS
Remote User: null
Server Port: 443
Server Name: onlinetools.ups.com
Servlet Path: /Ship
Einen Zertifikatsfehler erhalte ich "leider" nicht.
Auf dieser Seite
https://www.ionos.de/tools/ssl-check mal Deine
Url eingeben und prüfen lassen, wie es da so mit dem Zertifikat aussieht. Du solltest da erfahren, ob das Zertifikat in Ordnung ist, ob es richtig installliert ist ...
Eventuell bekommst Du so etwas konkretere Informationen, mit denen wir dann hier gezielt weitersuchen /-helfen können.
Sieht auch alles gut aus - siehe Anhang.
Erst wenn alle obigen "Tests" fehlerfrei beendet werden und dann das Problem bestehen bleibt, müssen wir uns Sorgen um Deine Implementierung und/oder Deine Delphiversion machen.
Wie kann ich da helfen? Mein Aufruf geht ja über den Standard-
WSDL-Aufruf, den Delphi beim Import einer
WSDL anlegt:
Code:
procedure _ProcessShipment(out sresp: ShipmentResponse; const RequestStream, ResponseStream: TMemoryStream);
var
prio: THTTPRIO;
port: ShipPortType;
h: TUPSWebServiceHandler;
begin
h := TUPSWebServiceHandler.Create(RequestStream, ResponseStream);
try
prio := THTTPRIO.Create(nil);
prio.OnBeforeExecute := h.UPSShipmentSOAPBeforeExecute; // speichert eine Kopie des Requests für Log-Zwecke
prio.OnAfterExecute := h.UPSShipmentSOAPAfterExecute; // speichert eine Kopie der Response für Log-Zwecke
port := GetShipPortType(False, UPSWEBSERVICE_SHIPMENT_URL, prio);
sresp := port.ProcessShipment(nil, nil); // diese Zeile wirft den Fehler
finally
h.Free;
end;
end;
Im Log sehe ich, dass UPSShipmentSOAPBeforeExecute durchlaufen wird, das
SOAP-Request sieht auch in Ordnung aus.