Comment envoyer des types complexes à partir de PHP SoapClient à ASP.NET serveur SOAP?
Bonjour, je vais avoir des problèmes pour envoyer des tableaux, des structures et des tableaux de structures de PHP à une ASP.NET serveur SOAP...
Que quelqu'un a une solution pour cela? J'ai googlé pour les jours et à toute solution a fonctionné pour moi. Perphaps j'oublie quelque chose...
Il y a des exemples de mon code:
$client = new SoapClient($options);
$pCriteria = new stdClass();
$pCriteria->type=1;
$pCriteria->capacity=4;
//Test 1 (fail):
$resp = $client->GetRooms(array("pCriteria"=>$pCriteria));
//Test 2 (fail):
$resp = $client->GetRooms(array("pCriteria"=>new SoapVar($pCriteria, SOAP_ENC_OBJECT, "TCriteria", "http://www.w3.org/2001/XMLSchema")));
print_r($resp);
Je ne sais pas comment le code des fonctions qui nécessitent un tableau de TCriteria (TCriteria[], TCriteria_Array type), soit... j'ai essayé d'envoyer le raw tableau, une SoapVar avec SOAP_ENC_ARRAY d'encodage et de TCriteria_Array type, ... mais il ne fonctionne pas (le serveur SOAP devient unavaiable et doit être redémarré).
J'ai essayé de créer des classes pour les types complexes aussi, au lieu de stdClass, mais pas de travail.
Je ne sais pas où est le problème. Les admins du serveur ne peut pas m'aider et je n'ai pas trouvé de solution sur internet. Je suis un peu désespérée hehe.
Pouvez-vous m'aider s'il vous plaît? Pouvez-vous fournir des exemples de code avec les trois cas (tableau de données simple, un tableau de struct et struct) ? Merci!
- Accidentellement downvoted - comment puis-je annuler ce?
Vous devez vous connecter pour publier un commentaire.
J'ai eu une situation similaire avec un PHP Soap Client de communiquer avec un .NET Serveur Soap en utilisant WSDL 2.0. Voici une chose que j'ai découvert: Lors du passage de l'information au serveur, vous devez définir explicitement la variable comme une SoapVar objet. Donc dans votre exemple ci-dessus, à le modifier:
Le passage d'un tableau est similaire, essentiellement, vous passez d'un tableau de SoapVars:
Aussi, vous pouvez utiliser plusieurs fonctions de l'SoapClient pour obtenir certains des commentaires supplémentaires sur les erreurs possibles.
Si vous pouvez obtenir une copie de l'WSDL format, vous pouvez utiliser la réponse de l'commandes ci-dessus pour déterminer ce qui ne va pas. Habituellement, vous pouvez accéder à partir de l'URL que vous passez à la SoapClient. Ainsi, par exemple, si le WSDL des services de l'URL est http://example.com/webservices/wvrgroupservice.asmx?WSDL, entrez http://example.com/webservices/wvrgroupservice.asmx pour afficher les fonctions et devrait XML à partir de ce serveur.