[PHP5] SOAP: Einfaches Skript funktioniert nicht...

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [PHP5] SOAP: Einfaches Skript funktioniert nicht...

    Hallo,
    ich versuche einen ganz einfachen SOAP-Zugriff zu machen, hierzu nutze ich folgende Dateien:

    Hier die WSDL-Datei:

    Code:
     <?xml version ='1.0' encoding ='UTF-8' ?> 
    <definitions name='TestServer' 
    xmlns:tns='http://localhost/test/soap/testserver.wsdl' 
    xmlns:soap='http://schemas.xmlsoap.org/wsdl/soap/' 
    xmlns:xsd='http://www.w3.org/2001/XMLSchema' 
    xmlns:soapenc='http://schemas.xmlsoap.org/soap/encoding/' 
    xmlns:wsdl='http://schemas.xmlsoap.org/wsdl/' 
    xmlns='http://schemas.xmlsoap.org/wsdl/'> 
    
    <message name='addiereAnfrage'> 
    	<part name='sum1' type='xsd:float'/> 
    	<part name='sum2' type='xsd:float'/> 
    </message> 
    <message name='addiereAntwort'> 
    	<part name='Result' type='xsd:float'/> 
    </message> 
    <portType name='TestServerPortType'> 
    	<operation name='addiere'> 
    		<input message='tns:addiereAnfrage'/> 
    		<output message='tns:addiereAnwort'/> 
    	</operation> 
    </portType> 
    <binding name='TestServerBinding' type='tns:TestServerPortType'> 
    	<soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http'/> 
    		<operation name='addiere'> 
    		<soap:operation soapAction='urn:xmethodsTestServer#addiere'/> 
    		<input> 
    			<soap:body use='encoded' namespace='urn:xmethodsTestServer'
    
     encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/> 
    		</input> 
    		<output> 
    			<soap:body use='encoded' namespace='urn:xmethodsTestServer'
    encodingStyle='http://schemas.xmlsoap.org/soap/encoding/'/> 
    		</output> 
    	</operation> 
    </binding>
    <service name='TestServerService'> 
    <port name='TestServerPort' binding='TestServerBinding'> 
    <soap:address location='http://localhost/test/soap/server.php'/> 
    </port> 
    </service> 
    </definitions>

    Hier meine Server.php

    PHP Code:
    <?php 
    function addiere($sum1$sum2) { 
    return 
    $sum1 $sum2

    $server = new SoapServer(NULL
    array(
    'uri' => "http://localhost/test/soap/")); 
    $server->addFunction('addiere'); 
    $server->handle(); 
    ?>
    Und hier meine Client.php:

    PHP Code:
     <?php 
    $client 
    = new SoapClient('http://localhost/test/soap/testserver.wsdl'); 
    //{url} wie immer ersetzen 
    $result $client->addiere(1020); 
    echo 
    $result
    ?>

    Also ich bin für jede Hilfe dankbar. So langsam bin ich da echt verzweifelt, weiß nicht, warum das nicht läuft...

    Michael
    Last edited by MikeG1980; 22-01-2006, 19:57.

  • #2
    Die Fehlermeldung sieht übrigens folgendermaßen aus:


    Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Missing with name 'tns:addiereAnwort' in D:\wincvs\webuni\test\soap\client.php:2 Stack trace: #0 D:\wincvs\webuni\test\soap\client.php(2): SoapClient->__construct('http://localhos...') #1 {main} thrown in D:\wincvs\webuni\test\soap\client.php on line 2

    EDIT:
    by TobiaZ: Fehlermeldungen muss man beim besten Willen nicht in CODE-Tags packen.
    Last edited by TobiaZ; 22-01-2006, 18:57.

    Comment


    • #3
      Also wenn man 5km nach rechts scrollen muss, wird dir mit sicherheit keiner weiterhelfen..

      Comment


      • #4
        das hatte ich aber schon vor ner stunde berichtigt...

        Comment


        • #5
          Ups, Sorry!

          Werde in meine Post in Zukunft besser formatieren...

          Hat vielleicht jemand eine Idee, wie man eine einfache SOAP-Verbindung mit WSDL-File macht?

          Gruß,
          Michael

          Comment


          • #6
            Bearbeite mal deinen ersten Beitrag..

            Comment


            • #7
              Ups, dachte der passt, aber ich habe auch einen eher großen Monitor...

              Naja, jetzt sollte es ordentlich aussehen (jedenfalls tut es das bei mir)...

              Comment


              • #8
                Was hast Du denn für nen Monitor? 40 Zoll? Ich hab vorher, das Fenster über 2 19° TFT's ziehen müssen um alles sehen zu können..

                Naja, ist ja jetz auch wayne. Zu deinem Problem:
                suchen, lesen und staunen

                Comment


                • #9
                  Danke für den Link, den habe ich auch schon gesehen, und immer wenn ich versuche die Sachen so nachzubasteln bekomme ich folgende Fehlermeldung:


                  Warning: SoapClient::__construct(http://localhost/HalloWelt.php?wsdl) [function.--construct]: failed to open stream: HTTP request failed! HTTP/1.1 500 Internal Service Error in D:\wincvs\webuni\test\soap\client.php on line 3

                  Warning: SoapClient::__construct() [function.--construct]: I/O warning : failed to load external entity "http://localhost/HalloWelt.php?wsdl" in D:\wincvs\webuni\test\soap\client.php on line 3
                  SOAP-ERROR: Parsing WSDL: Couldn't load from 'http://localhost/HalloWelt.php?wsdl'


                  Erstaunlicherweise funktionieren diese Skripte auf meinem anderen Rechner, auf dem ich die selbe aktuelle Version von XAMPP installiert habe, ohne Probleme. Leider muss ich das Zeugs jetzt auf meinem Notebook hinbekommen...

                  Habe daraufhin nochmal XAMPP neu installiert, und es geht immer noch nicht...

                  Naja, irgendwie seltsam die ganze Sache...

                  Comment

                  Working...
                  X