2010-11-22 3 views
0

Ich benutze PHP Standard SoapClient für die Kommunikation. Ich muss Daten senden, die ungefähr so ​​aussehen.PHP: Wie man eine SOAP Anfrage mit complexTypes macht?

Das einzige Problem ist, wie complexType "GenericPublication" im folgenden Code hinzufügen, alles andere funktioniert.

$payloadPublication = array('payloadPublication'=> "subtags/data"); 
+0

Können Sie mit mehr Details zu den Daten aktualisieren – wajiw

+0

Ein Weg ist, XML direkt zu verwenden, anstatt Objekte zu machen, und das hat für mich funktioniert. http://www.herongyang.com/WSDL/PHP-SOAP-SoapVar-Create-Encoded-Values.html – Sharj

Antwort

0

Sie könnten die anderen Antworten versuchen, aber ich löste mein Problem durch das Senden von XML direkt und das hat für mich funktioniert.

$ myXML = "all die xml, die Sie wollen in der Soap Anfrage Körper senden";

$ xmlvar = neue SoapVar ($ myxml, XSD_ANYXML);

$ params-> xmlDocument = (Objekt) $ xmlvar;

$ save_result = $ client-> yourFunctionName ($ xmlvar);

0

bin Erraten ich hier nur am Beispiel von Ihnen bereitgestellten (weitere Informationen über den Dienst wäre hilfreich), aber im Grunde würden Sie nur so etwas tun:

class MYGenericPublication { 
    public $subtags; 
    public $name; 
} 

$new_pub = new MYGenericPublication; 
$new_pub->subtags = array('tagA', 'tagB'); 
$new_pub->name = 'HiThere'; 

$client = new SoapClient('foo?wsdl', classmap=array('GenericPublication' => 'MYGenericPublication')); 
$client->doSomethingWithPublication(array('payloadPublication' => $new_pub)); 

$my_pub = $client->findPublication(array('name' => 'HiThere')); 
echo $my_pub->subtags[0]; // tagA 
echo $my_pub->name; // HiThere 
echo get_class($my_pub); // MYGenericPublication 

meine Antwort anzeigen hier: Passing user-defined types in PHP SOAP für weitere Details

+0

Das würde bei der Kommunikation mit .NET-basierten SOAP-Server nicht funktionieren. – Sharj

+0

Vielleicht bin ich hier unwissend. Aber warum sollte es nicht mit einem .NET Server funktionieren? –

+0

Ich bin mir nicht sicher, vielleicht bin ich hier ignorant, aber ich bekam immer Fehler "Der angegebene Typ ist abstrakt: name = 'Objekt'" wo Objekt ist Ich habe versucht, XML direkt zu senden das hat für mich funktioniert. – Sharj