Markus: XML Datei mit Zertifikat versenden via SOAP + PHP

XML Datei mit Zertifikat versenden via SOAP + PHP

Hallo zusammen,
ich habe eine Frage bzgl. der Übertragung von XML Dateien via SOAP mit zertifikat + PHP.

Gegeben habe ich eine Beispiel - XML - Datei (siehe unten), Zugangsdaten zu einem Server:

[url]https://b2blabla.eu.net/8000[/url] (was etwa so aussieht) und man hat mir noch ein Zertifikat

mitgegeben, was der Server dann offensichtlich zur Authentifizierung benötigt.

Soweit so gut, die Frage ist nun, kann mir jemand sagen, wie ich mit einer PHP Anwendung mit diesem Server sprechen kann?

Heisst, ich könnte diese XML Datei automatisch aus der Datenbank heraus erstellen lassen. Das funktioniert auch schon. Jetzt würde ich sie gerne nach dem Auslösen eines Submit-Buttons zur anderen Seite --> [url]https://b2blabla.eu.net/8000[/url] schicken, wo es dann dort wieder von einer SAP-Anwendung eingelesen werden soll.

Hat jemand eine Ahnung, wie man sowas bewerkstelligen könnte?

Wäre um jeden Rat sehr dankbar.

Viele Grüsse und schon mal mercie!
Markus

P.S. Ach ja, meine Anwendung, welche die XML Dateien erzeugt und auch zum anderen https:/... Server senden soll, basiert auf einem Debian Server, einer MySQL Datenbank und HTML-Doc und natürlich PHP..

P.P.S. Hier noch ein Beispiel einer ähnlichen XML-Datei, die schon bereits immer vorliegt und automatisch erzeugt werden kann:

[CODE]<?xml version="1.0" encoding="UTF-8"?>
<!-- Mit XMLSpy v2005 rel. 3 U bearbeitet (http://www.altova.com) von  () -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
 <xs:simpleType name="AuftragsID">
  xs:annotation
   xs:documentationLALA-ID</xs:documentation>
  </xs:annotation>
  <xs:restriction base="xs:integer">
   <xs:totalDigits value="8"/>
  </xs:restriction>
 </xs:simpleType>
 <xs:simpleType name="Betrag">
  xs:annotation
   xs:documentationGeldbetrag</xs:documentation>
  </xs:annotation>
  <xs:restriction base="xs:decimal">
   <xs:totalDigits value="10"/>
   <xs:fractionDigits value="2"/>
  </xs:restriction>
 </xs:simpleType>

$RCSfile: lalaanlage.xsd,v $
$Revision: 1.7 $
$Date: 2005/09/20 14:41:59 $

</xs:documentation>
  </xs:annotation>
  xs:complexType
   xs:sequence
    <xs:element name="LALAauftragKopf">
     xs:complexType
      xs:sequence
       <xs:element name="KommNummer" type="AuftragsID">
        xs:annotation
         xs:documentationKommissions-Nr. der NDL</xs:documentation>
        </xs:annotation>
       </xs:element>
       <xs:element name="NdlNummer">
        xs:annotation
         xs:documentationKundennummer der NDL, Stellen 1-7 der PULZ-ID (Partnernummer)</xs:documentation>
        </xs:annotation>
        xs:simpleType
         <xs:restriction base="xs:positiveInteger">
          <xs:totalDigits value="7"/>
         </xs:restriction>
        </xs:simpleType>
       </xs:element>
       <xs:element name="PULZID">
        xs:annotation
         xs:documentationKEY</xs:documentation>

</xs:sequence>
     </xs:complexType>
    </xs:element>
    <xs:element name="TP_ReparaturauftragPosition">
     xs:complexType
      xs:sequence
       <xs:element name="Leistung" type="Kurzbezeichnung" maxOccurs="unbounded">
        xs:annotation
         xs:documentationLulu</xs:documentation>
        </xs:annotation>
       </xs:element>
       <xs:element name="Preis" type="Kurzbezeichnung" maxOccurs="unbounded">
        xs:annotation
         xs:documentationPreis je Leistung</xs:documentation>
        </xs:annotation>
       </xs:element>
      </xs:sequence>
     </xs:complexType>
    </xs:element>
   </xs:sequence>
   <xs:attribute name="Version" type="xs:decimal" use="required">
    xs:annotation
     xs:documentationVersionsnummer der XML-Datenstruktur</xs:documentation>
    </xs:annotation>
   </xs:attribute>
  </xs:complexType>
 </xs:element>
</xs:schema>[/CODE]

  1. Hallo Markus,

    Soweit so gut, die Frage ist nun, kann mir jemand sagen, wie ich mit einer PHP Anwendung mit diesem Server sprechen kann?

    das Thema wird z.B. auch im Buch "Web APIs with PHP" behandelt.
    Die Code-Beispiele dazu gibt es hier
    http://www.wrox.com/WileyCDA/WroxTitle/productCd-0764589547,descCd-download_code.html
    Vielleicht kannst Du da auch ohne Buch was passendes finden.

    Der für Dich interessante Teil dürfte das clientseitige Zertifikat sein.
    Dafür kommt curl zum Einsatz.

    <?php
    function callAPI($endpoint, $requestBody)
    {
      $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, $endpoint);
      curl_setopt($ch, CURLOPT_SSLCERT, "../certs/cert_key_pem-1.txt");
      curl_setopt($ch, CURLOPT_POST, TRUE);
      curl_setopt($ch, CURLOPT_POSTFIELDS, $requestBody);
      ob_start();
      curl_exec($ch);
      $response = ob_get_clean();
      if (curl_error($ch))
     {
       file_put_contents("/tmp/curl_error_log.txt", curl_errno($ch) . ": " .
        curl_error($ch), "a+");
       curl_close($ch);
       return null;
     }else
     {
        curl_close($ch);
        return $response;
     }
    }
    ?>

    $endpoint ist hier die URL, $requestBody der SOAP-request.
    Wenn alles klappt solltest Du eine entsprechende Antwort erhalten.

    Viele Grüße

    Stefan

    --
    bythewaythewebsuxgoofflineandenjoytheday