La question : existe-t-il un moyen de visualiser le XML qui serait créé avec un appel de fonction PHP SoapClient AVANT d'envoyer la requête ?
Contexte:
Je suis nouveau dans la communication WSDL, et j'ai un client qui veut que je développe en PHP, un moyen de communiquer avec un service WSDL écrit en ASP.NET. Je suis allé assez loin, mais je rencontre un problème lorsqu'il s'agit de passer un type complexe. J'ai essayé deux ou trois choses différentes jusqu'à présent.
1) Configuration d'une seule baie telle que $params->Person->name
$params->Person->address
2) Configuration d'une seule baie $Person = array('name'=>"joe",'address' = "123");
Puis en passant dans l'appel en tant que paramètre "Person" => $Person ; et quelques autres. Mais à chaque fois que j'obtiens l'erreur
SoapException : le serveur n'a pas pu traiter la demande ---> System.Exception : la personne est requise. au nom du service.
Afin d'approfondir le dépannage, j'aimerais voir le document XML qui est envoyé pour voir s'il crée un type complexe comme je l'attends. Je crée le service en utilisant $client = new SoapClient('wsdldoc.asmx?WSDL');
en l'appelant avec $client->CreateUser($params);
, puis en essayant de le voir en utilisant la fonction $client->__getLastRequest();
mais il n'atteint jamais le __getLastRequest car il rencontre une erreur fatale lors de l'appel de CreateUser ($ paramètres).
La question à nouveau : existe-t-il un moyen d'afficher le XML créé par l'appel CreateUser($params) SANS l'envoyer réellement et provoquer une erreur fatale
2 réponses
J'ai trouvé ce fil en travaillant sur le même problème et j'ai été déçu parce que j'utilisais des classes qui étendaient déjà la classe SoapClient() et que je ne voulais pas trop faire de bêtises. Cependant, si vous ajoutez la balise "exceptions"=>0 lorsque vous lancez le cours, cela ne générera pas d'erreur fatale (bien qu'il imprimera une exception):
SoapClient($soapURL,array("trace" => 1,"exceptions"=>0));
Cela m'a permis d'exécuter __getLastRequest() et d'analyser le XML que j'envoyais.
Je ne crois pas qu'il existe un moyen de voir tout XML en cours de création... principalement parce que la fonction échoue lors de sa tentative de création/transmission.
Je ne sais pas si vous avez déjà essayé, mais si vous avez du mal à décider de ce que vous devez exactement transmettre à la fonction, vous pouvez utiliser :
$client->__getTypes();
http://us3.php.net/manual/en/soapclient.gettypes.php
J'espère que cela t'aides!
__getLastRequest()
, s'il utilise la « trace 'option.
Questions connexes
De nouvelles questions
php
PHP est un langage de script largement utilisé, de haut niveau, dynamique, orienté objet et interprété, principalement conçu pour le développement Web côté serveur. Utilisé pour les questions sur le langage PHP.