![]() |
XE2 - SOAP per HTTPS
Hi,
wie bringe ich meinem XE2 bei, unter Windows per HTTPS mit einem SOAP-Server zu kommunizieren? Konkret habe ich das Problem, daß die Unit Soap.SOAPHTTPTrans zwar allerlei dafür vorzusehen scheint, aber nur über die Indys. Insbesondere der Compileschalter
Delphi-Quellcode:
ist da von Interesse. Denn der wird im Verlauf der Unit mehrfach abgefragt und beschäftigt sich intensiv mit den nötigen Details für HTTPS/Zertifikate etc. Er wird am Anfang der Unit hierüber
USE_INDY
Delphi-Quellcode:
aber offenkundig für Windows nicht gesetzt(*). :shock:
{$IFDEF POSIX}
{$DEFINE USE_INDY} {$ENDIF} {$IFDEF MSWINDOWS} {.$DEFINE USE_INDY} {$ENDIF} Was ist zu tun, damit eine HTTPS-Kommunikation Möglich wird, und weiter: Wie wähle ich das Zertifikat aus, daß für die Kommunikation genutzt werden soll? Danke, Sherlock (*) Man beachte den kleinen Punkt vor dem
Delphi-Quellcode:
$DEFINE
|
AW: XE2 - SOAP per HTTPS
Willst Du Serverzertifikate oder auch Clientzertifikate verwenden? Falls nur Server, sollte die Installation des Zertifkates ausreichen.
|
AW: XE2 - SOAP per HTTPS
Danke :) Dann nehme ich einfach mal an, daß das mit dem Zertifikat sich erledigt hat. Was ist nun aber in meinem SOAP Client zu tun? Ich habe das klitzigkleine Problem, daß ich nciht direkt am fraglichen SOAP-Server testen kann. Ich muss also etwas ins Blaue hinein entwickeln und wenn es ungefähr richtig erscheint, kann ich das an den Kunden weiterleiten, das er es ausprobiert. Diesen Vorgang würde ich halt gerne so selten wie möglich durchexerzieren...
Sherlock |
AW: XE2 - SOAP per HTTPS
Wenn Du volle Kontrolle über die Zertifikate möchtest, kannst Du das im THTTPRIO.OnBeforePost machen.
|
AW: XE2 - SOAP per HTTPS
OK, also nochmals zur Konkretisierung: Zertifikate sind abgehandelt. Kann ein Delphi XE2 SOAP-Client "out of the box" https? Also quasi nur durch setzen der Empfänger URI auf etwas, das mit "https://" beginnt. Ich kann es wie gesagt nicht testen, sonst würde ich es bestimmt tun. :wall:
Sherlock |
AW: XE2 - SOAP per HTTPS
Ich muss das wieder aufgreifen. Leider ist mir nicht klar, wie ich vorgehen muss. Offenkundig kann der XE2 Soap-Client kein https. Wie muss ich nun also vorgehen, um eine SSL-Verschlüsselung durchzuführen? Das OnBeforePost hört sich gut an, aber was ist dort zu tun?
Sherlock |
AW: XE2 - SOAP per HTTPS
|
AW: XE2 - SOAP per HTTPS
Und weiter gehts, das Thema kommt nur schleppend voran.
Der Link hat leider nciht gefruchtet. Ich bekommen beim Versuch die Verbindung herzustellen die Fehlermeldung: Zitat:
Code:
Wie passt das mit dem bisherigen Ansatz zusammen? :wall:
HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(pUrl);
httpWebRequest.Headers.Add("SOAPAction", "service"); httpWebRequest.ContentType = "text/xml; charset=utf-8"; httpWebRequest.Method = "POST"; httpWebRequest.ClientCertificates.Add(new X509Certificate2(pCertificate, pCertificatePassword)); Byte[] postDataBytes = Encoding.UTF8.GetBytes(postData); httpWebRequest.ContentLength = postDataBytes.Length; Stream requestStream = httpWebRequest.GetRequestStream(); requestStream.Write(postDataBytes, 0, postDataBytes.Length); requestStream.Close(); HttpWebResponse resp = (HttpWebResponse)httpWebRequest.GetResponse(); StreamReader sr = new StreamReader(resp.GetResponseStream()); string result = sr.ReadToEnd(); pUrl = URL für den Webservice pCertificate = Dateiname des Zertifikates uCertificatePassword = Kennwort des Zertifikates postData = komplettes XML-Dokument (Envelope) Sherlock |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:45 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