Thema: HTTPRio + SSL

Einzelnen Beitrag anzeigen

Rolf Frei

Registriert seit: 19. Jun 2006
629 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: HTTPRio + SSL

  Alt 6. Sep 2019, 16:02
Soweit ich den obigen Code anschaue, fehlt da der ganze SOAP-Envelope Teil drumherum. Mit anderen Worten, das XML ist nicht SOAP-konform. HTTPRio macht das normalerweise richtig. Der direkte Aufruf mit Indy ohne SOAP-Teil kann daher nicht gehen. Verwende die Delphi Klassen die vom WDSL Importer erstellt wurden mit HTTPRio.

Das Ganze hat aber nicths mit SSL zu tun. Ob du also wirklich das selbe Problem hast, musst du genauer mitteilen.

Hier mal ein Beispiel einer Anfrage an einen SOAP-Dienst, wie der sein müsste:

Code:
HTTP Header
-----------
POST /soap HTTP/1.1
SOAPAction: ""
Content-Type: text/xml
User-Agent: Borland SOAP 1.2
Host: 172.17.211.8:8080
Content-Length: 1882
Connection: Keep-Alive
Cache-Control: no-cache

Post-Daten:
----------
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <SOAP-ENV:Body>
      <CreateLabelRequest xmlns="urn:labelprintWs">
         <printer></printer>
         <parcelNumber></parcelNumber>
         <serviceCode>NP</serviceCode>
         <customerBarcode1>123456789-1</customerBarcode1>
         <customerBarcode2>234567891</customerBarcode2>
         <customerBarcode3>345678911</customerBarcode3>
         <customerBarcode4>456789111</customerBarcode4>
         <receiverName1>Max Mustermann</receiverName1>
         <receiverName2>Name 2</receiverName2>
         <receiverName3>Name 3</receiverName3>
         <receiverStreet>Bahnweg 29</receiverStreet>
         <receiverCity>Testlingen</receiverCity>
         <receiverZipCode>5000</receiverZipCode>
         <receiverCountry>CH</receiverCountry>
         <receiverPhone>099 999 99 99</receiverPhone>
         <senderName1>Test Meier</senderName1>
         <senderName2>EDV Abteilung</senderName2>
         <senderStreet>Mustergasse 2</senderStreet>
         <senderZipCode>5555</senderZipCode>
         <senderCity>Testlingen</senderCity>
         <senderCountry>CH</senderCountry>
         <countParcelsOfShipment>3</countParcelsOfShipment>
         <numberOfThisParcelInShipment>1</numberOfThisParcelInShipment>
         <weight>2.500</weight>
         <delisId>KD30000</delisId>
         <predictNotificationLanguage>DE</predictNotificationLanguage>
         <predictContactData>Kontakt / 099 999 99 99</predictContactData>
      </CreateLabelRequest>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Als Antwort kommt dann sowas retour:
Code:
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
    <SOAP-ENV:Header/>
    <SOAP-ENV:Body>
        <ns3:CreateLabelResponse xmlns:ns3="urn:labelprintWs">
            <success>true</success>
            <message>success</message>
            <parcelNumber>06086068925645</parcelNumber>
            <labelId>233</labelId>
            <base64pdf></base64pdf>
            <additionalInfo></additionalInfo>
        </ns3:CreateLabelResponse>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Aber wie gesagt, dieser ganze Datenverkehr mach die HTTPRio Komponente automatisch und du musst nur die erzeugten Klassen nutzten ohne darüber nachzudenken, wie du das übertragen musst. Das Delphi SOAP Framework macht das alles für dich.

Geändert von Rolf Frei ( 6. Sep 2019 um 16:09 Uhr)
  Mit Zitat antworten Zitat