Komplexes Webservice mit PHP aufrufen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Komplexes Webservice mit PHP aufrufen

    Hi,

    mein 1. Eintrag in einem Forum überhaupt, also bitte Nachsicht haben, falls ich Infos vergesse.

    Nun zu meine Problem:
    Ich muss mit folgendem Webservice arbeiten:
    Code:
     
    <soapenv:Envelope xmlns:soapenv="[URL]http://schemas.xmlsoap.org/soap/envelope/[/URL]" xmlns:urn="urn:xxx">
       <soapenv:Header>
          <urn:AuthenticationInfo>
             <urn:userName></urn:userName>
             <urn:password></urn:password>
          </urn:AuthenticationInfo>
       </soapenv:Header>
       <soapenv:Body>
          <urn:Get>
             <urn:Incident_Number></urn:Incident_Number>
          </urn:Get>
       </soapenv:Body>
    </soapenv:Envelope>
    Nun habe ich versucht, dieses in PHP aufzurufen:
    PHP-Code:
    $client = new SoapClient("http://path/xxx"); 
    $client->__soapCall('Get',array('AuthentificationInfo'=>array('userName' => "uname"'password'=>"pw"),'Incident_Number'=>array("INnr"))); 
    Folgende Fehlermeldung wird angezeigt:
    Code:
    [B]Fatal error[/B]: Uncaught SoapFault exception: [Client] SOAP-ERROR: Encoding: object has no 'Incident_Number' property in ...
    Nun meine Frage:
    Wie kann ich das obige Webservice richtig Aufrufen, sodass sowohl userName und password als auch die Incident_Number an das Webservice übergeben werden?

    Vielen Dank im Voraus für Eure Hilfe!

    LG Max

  • #2
    Ich wollte mich damit noch etwas mehr auseinander setzen, bin nur leider noch nicht dazu gekommen. Jedenfalls, Du müsstest wohl nicht nur einen new SoapClient erzeugen sondern zusätzlich noch einen new SoapHeader.

    Jedenfalls hatte ich Ende letzten Jahres mal NuSOAP, PHP-SOAP und PEAR-SOAP durchprobiert, am einfachsten war es noch mit NuSOAP, da das Ding nur aus einer Scriptseite besteht und einiges an Beispielen sich mit im Download-Archiv befanden. Anschauen könntest Du Dir diese Beispiele mal.Würde dennoch bei PHP-SOAP bleiben.
    Zuletzt geändert von Melewo; 02.03.2013, 14:20.

    Kommentar


    • #3
      PHP5 bringt ja bereits die entsprechenden Soap Klassen für das beschriebene Vorhaben mit. Die Klasse SoapHeader ist genau für sein Vorhaben gemacht.

      Der Body der XML Nachricht wird dann automatisch mit dem Aufruf der Get Methode erstellt. Der Get Methode muss wahrscheinlich ein Objekt mit den entsprechenden Eigenschaften übergeben werden. Das Beispiel könnte wie folgt aussehen:
      PHP-Code:
      $namespace 'https://Uri/Zum/urn/Namespace/';

      $AuthenticationInfo = new StdClass();
      $AuthenticationInfo->userName 'DeinBenutzername';
      $AuthenticationInfo->password 'DeinPassword';

      $header = new SoapHeader($namespace'AuthenticationInfo'$AuthenticationInfo);

      $client = new SoapClient('DeinWebservice.wsdl');
      $client->__setSoapHeaders($header);

      $params = new StdClass();
      $params->Incident_Number 'yaddayadda';

      $result $client->Get($params); 
      Das war jetzt quick 'n dirty. Du solltest das Beispiel allerdings mit Deinen Daten anwenden können. Wie Melewo aber schon sagte, ist es mit den Soap Klassen von PHP5 absolut nicht mehr notwendig auf nicht native Bibliotheken zuzugreifen.
      MM Newmedia | MeinBlog

      Kommentar

      Lädt...
      X