PHP Frage, Datenübergrabe und Abfrage via SOAP

Domi83

Rear Admiral
Registriert
Feb. 2010
Beiträge
5.202
Guten Abend Gemeinde :)
Ich habe da mal eine kleine Frage. Vor ungefähr zwei / drei Jahren haben wir bei uns in der Firma eine Datenübergabe an einen Versicherer fertig gestellt, was auch bis heute funktioniert. Aktuell läuft das alles mit curl und die ganzen Daten werden in eine Art XML Paket zusammen gesetzt und dann an den Versicherer geschickt. Das ganze sieht dann am Ende ungefähr so aus...
Code:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
 <soap:Header />
 <soap:Body>
  <HMR_InsuranceBookRQ Version="2005.1" Target="Test" TimeStamp="" xmlns="http://xxxx.xxx/rvm/ota/ws/types">
   <POS>
    <Source ISOCountry="DE" ISOCurrency="EUR" TerminalID="xxxx" AgentDutyCode="Test">
     <RequestorID ID="xxxx" Type="5" />
    </Source>
   </POS>

   <PlanForBookRQ InsuranceCompany="xxx" PlanID="1">
    <CoveredTravelers>
     <CoveredTraveler ID="xxxx">
      <CoveredPerson>
       <NamePrefix>xxxx</NamePrefix>
       <GivenName>xxxx</GivenName>
       <Surname>xxxx</Surname>
       <BirthDate>xxxx</BirthDate>
       <Age>xxxx</Age>
      </CoveredPerson>
     </CoveredTraveler>
    </CoveredTravelers>

    ..........

    <BookServices>
     <Service ID="1">
      <QuotedTariff>
       <TariffCode>xxxx</TariffCode>
      </QuotedTariff>
      <TravelerAllocations>
       <TravelerAllocation TravelerIDRef="xxx" ID="xxx" CoInsured="false" />
      </TravelerAllocations>
     </Service>
    </BookServices>
   </PlanForBookRQ>
  </HMR_InsuranceBookRQ>
 </soap:Body>
</soap:Envelope>
Wenn ich mir das aber alles immer so anschaue, kann man das mit dem soapClient besser übergeben. Allerdings steige ich durch die ganzen Manuals gar nicht durch. Den soapServer brauche ich ja nicht wirklich, den stellt ja der Versicherer zur Verfügung. Mit diesem verbinde ich mich dann und bekomme nach der Übertragung (der Request??) einen Response, wenn ich mich jetzt nicht irre. Bei einem Fehler, zum Beispiel einer Doppelbuchung kommt so etwas....
Code:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
  <soapenv:Body>
    <HMR_InsuranceBookRS xmlns="http://xxxx.xxx/rvm/ota/ws/types" Target="Test" Version="2005.1">
      <Errors>
        <Error Language="de" Type="3" ShortText="HMR">Doppelbuchung - Buchung existiert mit VsNr 123456</Error>
      </Errors>
    </HMR_InsuranceBookRS>
  </soapenv:Body>
</soapenv:Envelope>
Nun habe ich mir heute Gedacht, versuchst Du mal den Response abzufangen mit so etwas ähnliche wie "wenn error vorhanden ist", aber ich scheitere ja schon an den ersten Schritten. Ich hatte vorhin im Büro angefangen die Client Klasse zu initialisieren, die WDSL Adresse einzugeben und dann war es das. Da stehe ich dann schon. In den Manuals steht dann ungefähr so etwas...
PHP:
$client = new SoapClient("xxx.wsdl");
$client->_irgendeineFunktion();
Verstehe ich das nun richtig, und ich muss erst einmal am SoapServer anfragen, welche Funktionen / Methoden mir dieser zur Verfügung stellt und dann kann ich diese füttern? Ich weiß, in diesem Fall bin ich jetzt ein schwieriger Patient... aber beim lesen und verstehen, von Dingen die ich noch nie gemacht habe, bin ich öfters begriffsstutzig :(

Ich hoffe mal, anhand der Beispiele könnt Ihr mir schon irgendwie weiter helfen. Das erste habe ich allerdings etwas gekürzt, weil ich das Gefühl hatte das es sonst zu lang wird.

Gruß, Domi
 
Also der SOAP Server stellt Methoden zur Verfügung die ein Client aufrufen kann. Das muss dokumentiert sein, denn du musst als Client die Methoden mit den richtigen Parametern aufrufen.
Die WSDL beschreibt genau welche Methoden es gibt, wie du die aufrufst, und was als Rückgabewert kommt. Es gibt auch Tools um das Online zu testen wie z.B. http://www.validwsdl.com/ oder https://www.wsdl-analyzer.com/

Ich kenne mich mit PHP nicht aus, aber je nach Programmiersprache gibt es Tools die eine WSDL Datei einlesen und dann den entsprechenden Code-Rumpf auswerfen. Das geht für Server wie für Clients aber der Server gibt immer die Bedingungen vor.
 
Moin moin... Okay, dann schaue ich mir das einmal an. Parallel habe ich in der Dokumentation zu der Schnittstelle (durch die ich nicht so durchsteige) gesehen, dass dort direkte Ansprechpartner (System-Entwickler) genannt werden. Diese werde ich jetzt einfach mal im laufe des Tages anschreiben und vielleicht bekomme ich ja von denen ein paar Informationen :)

Anschließend gebe ich noch einmal ein Statement von mir. Mein Kollege sagte mir nämlich eben, als ich mit ihm darüber gesprochen hatte, das er auch schon mal in Foren angefragt hatte, aber man ihm dann mitteilte das diese Schnittstelle eher spezifisch ist und man dafür leider keine allgemeinen Informationen geben könnte.

Hätte er mir ja auch mal Früher mitteilen können... dann hätte ich am Freitag Abend und am Samstag nicht so viel gesucht :D

Gruß, Domi
 
Zurück
Oben