2010-11-22 30 views
0

J'utilise Php SoapClient par défaut pour la communication. Je dois envoyer des données qui ressemblent à ceci. Le seul problème est de savoir comment ajouter complexType "GenericPublication" dans le code suivant, tout le reste fonctionne.PHP: Comment faire une requête SOAP avec complexTypes?

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

Pouvez-vous mettre à jour avec plus de détails sur les données – wajiw

+0

L'one-way est d'utiliser directement XML au lieu de faire des objets et cela a fonctionné pour moi. http://www.herongyang.com/WSDL/PHP-SOAP-SoapVar-Create-Encoded-Values.html – Sharj

Répondre

0

Vous pourriez essayer les autres réponses mais j'ai résolu mon problème en envoyant le XML directement et cela a fonctionné pour moi.

$ myXML = "tout le xml que vous voulez envoyer dans la demande de savon du corps";

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

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

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

0

Je suis juste deviner ici basé sur l'exemple que vous avez fourni (plus d'informations sur le service serait utile), mais au fond vous suffit de faire quelque chose comme ceci:

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 

Voir ma réponse ici: Passing user-defined types in PHP SOAP pour plus de détails

+0

Cela ne fonctionnerait pas lors de la communication avec le serveur SOAP basé sur .NET. – Sharj

+0

Peut-être que je suis ignorant ici. Mais pourquoi cela ne fonctionnerait-il pas avec un serveur .NET? –

+0

Je ne suis pas sûr peut-être que j'ignore ici mais j'ai continué à obtenir l'erreur "Le type spécifié est abstrait: name = 'Object'" où Object est J'ai essayé d'envoyer xml directement et ça a marché pour moi. – Sharj