SOAP Server mit externer Klasse

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

  • SOAP Server mit externer Klasse

    Hallo miteinander!

    Ich benutze PHP V5.2.3 mit der integrierten SOAP Funktionalität und vorerst arbeite ich noch ohne WSDL. Ich habe nun ein Problem mit dem Server.
    Schreibe ich eine Klasse in derselben Datei in der der Server liegt funktioniert alles. Lagere ich die Klasse nun in eine externe php-Datei und inkludiere diese per "require_once" funktioniert der Aufruf nicht mehr! Auch include, include_once oder require funktionieren nicht... Es wird folgende Exception geworfen "looks like we got no XML document". Merkwürdigerweise ist aber der SOAPResponse richtig und genauso aufgebaut wie bei der funktionierenden Lösung.

    Funktionierende Lösung:
    server.php
    PHP-Code:
    class MySoapClass {
        public 
    $myAttribut 1;
        
        public function 
    __construct() {
            
    $this->myAttribut 2;
        }

        public function 
    getParty() {
            return 
    this->myAttribut;    
        }
    }

    try {
        
    $server = new SoapServer(
            
    null,
            array(
    "uri" => "http://localhost/ordner/"
            
    )
        );

        
    $server->setClass("MySoapClass"); 

        
    $server->handle();
    }
    catch(
    SOAPFault $f)
    {
        print 
    $f->faultstring;

    NICHT funktionierende Lösung:
    server.php
    PHP-Code:
    require_once "MySoapClass.php";
    try {
        
    $server = new SoapServer(
            
    null,
            array(
    "uri" => "http://localhost/ordner/"
            
    )
        );

        
    $server->setClass("MySoapClass"); 

        
    $server->handle();
    }
    catch(
    SOAPFault $f)
    {
        print 
    $f->faultstring;

    MySoapClass.php
    PHP-Code:
    class MySoapClass {
        public 
    $myAttribut 1;
        
        public function 
    __construct() {
            
    $this->myAttribut 2;
        }

        public function 
    getParty() {
            return 
    this->myAttribut;    
        }


  • #2
    Schau mal ob du in der server.php ein Leerzeichen oder eine leerzeile vor oder hinter den php tags stehen hast

    <--- da
    <?php

    ?>
    <---

    Das war mal bei nusoap ein Problem
    gruss Chris

    [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

    Kommentar


    • #3
      Ich hatte ein Leerzeichen hinter dem "?>" in der MySoapClass, das habe ich entfernt und jetzt geht es... Da hätte ich ja Tage suchen können! Vielen Dank für diesen Tip!!!! Das ist ja unglaublich...

      Kommentar


      • #4
        Unglaublich nicht, aber kommt gerne schon mal vor.. Man denke an die funktion header und einer Ausgabe davor....

        Das erste was SOAP erwartet scheint <?xml zu sein und kein whitespace..
        gruss Chris

        [color=blue]Derjenige, der sagt: "Es geht nicht", soll den nicht stoeren, der's gerade tut."[/color]

        Kommentar


        • #5
          Richtig! Habe mir gerade nochmal den SOAPResponse angeschaut, und mit dem Leerzeichen sieht es so aus: " <?xml". Es ist ein Leerzeichen davor, der eine valide Rückgabe verhindert! Da muss ich Zukunft mal drauf achten...

          Kommentar

          Lädt...
          X