[AJAX+SOAP] einfache Abfrage ohne WSDL

dow

Lieutenant
Registriert
Sep. 2002
Beiträge
732
Hallo,

ich versuche gerade mit Ajax eine SOAP-API anzusprechen, leider erstmal ohne Erfolg.

Es gibt einen sehr einfachen PHP-SOAP-Client welcher wunderbar funktioniert:

PHP:
require_once('nusoap.php');

$client = new nusoapclient('http://domain.com/serverapi.php');
$result = $client->call('funktionsname', array('id' => '1000', 'seite'=> $seite, 'werte' => 10));

echo $result;


Wo und in welchem Format der Funktionsaufruf allerdings mit Ajax übergeben werden muss bekomme ich allerdings nicht so richtig raus.

Denke der Funktionsaufruf gehört entweder in
Code:
 req.setRequestHeader("SOAPAction", 'mussdadiefunktionrein?');
oder in
Code:
req.send(oderdasistdiefunktion);
Wobei für SOAPAction in einigen Beispielen noch einmal die URL des Servers verwendet wird.

der ajax-code bisher (etwas vereinfacht):
Code:
     try {
     req = new XMLHttpRequest(); 
     /* e.g. Firefox */
     } catch(e) {
       try {
       req = new ActiveXObject("Msxml2.XMLHTTP");  
       /* some versions IE */
       } catch (e) {
         try {
         req = new ActiveXObject("Microsoft.XMLHTTP");  
         /* some versions IE */
         } catch (E) {
          req = false;
         } 
       } 
     }
req.onreadystatechange = function() {responseAHAH('fenster');};
req.open("POST", 'http://domain.com/serverapi.php', true); 
req.setRequestHeader("SOAPAction", 'mussdadiefunktionrein?');
req.setRequestHeader("Content-Type", "text/xml; charset=utf-8");*/
req.send(oderdasistdiefunktion);	

function responseAHAH(elementID) {
  document.getElementById[elementID].innerHTML = '<strong>Test</strong>';
}
 
Wo und in welchem Format der Funktionsaufruf allerdings mit Ajax übergeben werden muss bekomme ich allerdings nicht so richtig raus.
Ähm, dafür wäre die WSDL sehr nützlich. Warum muss es denn umbedingt ohne gehen? Wenn du die hättest könntest du dir mit wsdl2java einfach den Rumpf generieren lassen und bräuchtest dir um die ganze Geschichte mit SOAP keinen Kopf machen.
 
habe es mittlerweile hinbekommen, ohne WSDL. Grund dafür war, dass WSDL schlicht eine Datei mehr benötigt welche zu vermeiden war.

req.setRequestHeader("SOAPAction", ''); habe ich leer gelassen und in req.send(soapcontent); den kompletten soap-content mitgeschickt also body, envelope und die funktion.

Im FF und Opera läuft jetzt alles super, nur der IE findet in der Antwort nur eine XML-Node (die <xml.. eröffnungsdeklaration) welche laut IE7 keine childNodes hat...?


/edit:
@gaunt
Mache mir gerne einen Kopf :)
 
Zurück
Oben