Débogage PHP appel SOAP
Je suis nouveau sur le SAVON et la gestion d'un service web où il semblerait personne n'a interfacé à l'aide de PHP précédemment. Ils n'ont pas de code d'exemple à l'exception de C#, mais je n'ai que. eServices.asmx fournit WSDL si c'est la bonne façon de le dire.
L'erreur que j'obtiens est "Serveur ne reconnaît pas la valeur de l'en-Tête HTTP SOAPAction:" avec la formation du côlon suggérant aucune valeur n'est transmise, peut-être.
Mon code ressemble à ceci:
$URL = "http://nolaflash.example.com/xxxWS/eServices.asmx";
$namespace="http://www.example.com/webservices/";
include("SOAP/Client.php");
$soapclient = new SOAP_Client($URL);
$xml_data = //valid XML is here;
$res = $soapclient->UpdateData('usrname','pass',$xml_data);
mais j'ai aussi essayé:
$param = array('usrname','pass',$xml_data);
$res = $soapclient->call('UpdateData',$param, $namespace);
Googler suggère que cette erreur est un espace de noms en question. Le code C# j'ai n'a qu'un seul espace de noms référence:
[System.Web.Services.WebServiceBindingAttribute(Name="eServicesSoap", Namespace="http://www.example.com/webservices/")]
Si je dump $soapclient à l'écran avant l'appel de la fonction, je vois qu'il a reçu des données de eServices.asmx.
Je ne sais pas comment aller sur le débogage des ce et les membres du personnel au service ne sont pas familiers avec l'interaction avec le service en dehors de leur .NET IDE.
Toute pensée? Des conseils?
OriginalL'auteur jerrygarciuh | 2010-10-20
Vous devez vous connecter pour publier un commentaire.
J'ai l'habitude d'utiliser les méthodes getFunctions
et getLastRequest
pour m'aider à arranger les choses. D'abord je regarde la liste des fonctions et WSDL. Parfois, le WSDL et/ou le serveur n'est pas d'installation/configuré/codé correctement. De sorte que cette fonction liste risque d'être inutile. Le fichier WSDL devrait être définitive, mais hélas, des boiteux, des codeurs, etc...
Donc parfois je dois prendre un coup de couteau dans l'obscurité, regardez l'erreur, et puis regardez à la dernière demande. Avec cela, vous pouvez voir le code XML qui a été produite. Comparez cela à quelques exemples XML.
Ce qui s'est avéré plus utile lorsque vous traitez avec des codeurs qui ne veulent pas écrire des docs. Par le chemin, ils devraient donner des exemples XML - pas de montrer comment générer du XML à l'aide de la langue XYZ. Il y a peut-être plus utile d'infos dans le PHP/Savon de documentation
HTH
OK, bon, alors le problème est plus profond et plus probablement un problème de config... Une recherche tourné vers le haut il y a des choses à propos des espaces de nom XML:bluebones.net/2003/07/...
BTW, êtes-vous à l'aide d'un fichier WSDL/URL?
Salut Sims. Merci encore pour votre aide à ce sujet. Certainement appris de nouvelles choses. S'est avéré qu'ils avaient des problèmes dans leur fichier WSDL et une fois ceux-ci ont été corrigées à mes appels travaillé. Bien obligé!
Oui, parfois, c'est "l'autre gars" de la faute - esp quand ils sont coincés dans une technologie. Bonne chance!
OriginalL'auteur d-_-b
pour debug effet, vous pouvez utiliser web Fiddler debuger. Je l'ai trouvé très utile.
En ces jours, je suis en train de travailler sur un projet .net web services, et je dois consommer via PHP.
C'est un travail (et très simple) morceau de code. J'espère que cela peut vous aider.
Le but de ce morceau de code est de vérifier l'état d'un enregistrement spécifique.
C'est le wsdl
C'est le code php
OriginalL'auteur Luca