PHP Fatal error: “Le SAVON d'action spécifiée dans le message, " ne correspond pas à l'adresse HTTP du SAVON d'Action”
Je suis d'essayer d'écrire un script PHP qui se connecte au client SOAP pour notre SightMax interface. Avec le code ci-dessous je suis en mesure d'imprimer une liste de fonctions disponibles, mais lorsque j'essaie de l'appeler n'importe quelle fonction je reçois l'erreur suivante.
<?php
$client = new SoapClient('http://domain.com/SightMaxWebServices/SightMaxWebService.svc?wsdl', array('soap_version' => SOAP_1_2));
var_dump($client->__getFunctions());
$result = $client->__call("GetSiteSummary", array());
echo "<pre>";
print_r($result);
echo "</pre>";
?>
Fatal error: Uncaught SoapFault exception: [s:Sender] The SOAP action specified on the message, '', does not match the HTTP SOAP Action, 'SmartMax.SightMax.Agent.Operator/IRemotedWebsiteAdministrator/GetSiteSummary'. in test2.php:7 Stack trace: #0 test2.php(7): SoapClient->__call('GetSiteSummary', Array) #1 {main} thrown in test2.php on line 7
J'ai été à la recherche de cette erreur pour les deux derniers jours et j'ai lu les différents articles énonçant les problèmes possibles. Ce que je comprends de cette erreur se produit car le client SOAP est configuré pour wsHttpBinding et le construire en client SOAP en PHP ne prend pas en charge la wsHttpBinding ou j'ai besoin de spécifier plus précisément le SAVON d'action.
Quelqu'un peut nous donner un indice sur ce pour moi? Veuillez garder à l'esprit alors que je suis familiarisés avec PHP de travail avec du SAVON est nouveau pour moi, donc, étape par étapes sont très utiles.
Merci d'Avance.
- Hev-vous essayé d'omettre le paramètre de version dans
new SoapClient
? Soap 1.2 ne pas utiliser le SAVON d'action en-tête, 1.1. Il pourrait être, que le serveur ne comprend 1.1? - Quand j'enlève le SOAP_1_2 paramètre de version je reçois une autre erreur Fatal error: Uncaught exception de type soapfault: [HTTP] Ne peut pas traiter le message, car le type de contenu "text/xml; charset=utf-8" n'était pas du type attendu 'application/soap+xml; charset=utf-8'. dans test2.php:5 Stack trace: #0 [interne]: SoapClient->__doRequest('__call('GetSiteSummary', Array) #2 {principal} jeté dans /var/www/tools/html/whoseonchat/test2.php sur la ligne 5
Vous devez vous connecter pour publier un commentaire.
WCF semble être à la recherche pour l'action dans l'enveloppe SOAP. Vous pouvez l'ajouter à votre appel avec PHP SoapClient de cette façon:
Si vous modifiez le troisième paramètre et d'ajouter qu'entre votre instanciation de $client et l' __call (), il est conseillé de désactiver l'erreur (et éventuellement apporter sur les nouvelles, n'est-ce pas le SAVON de plaisir?)
Aussi pour info, juste après avoir traversé ce même problème, j'ai trouvé l' __getLastRequestHeaders(), __getLastRequest(), __getLastResponseHeaders(), et __ _ _ getLastResponse() fonctionne très pratique pour voir si ce que j'ai essayé n'avait aucun effet (notez que vous devez ajouter de la "trace" => "1" à votre SoapClient options pour les personnes à travailler.)
Vous devriez donner à l'Action SOAP. Puisque vous n'avez pas l'inclure dans l'initialisation de
SoapClient
, il ne correspond pas au SAVON d'Action du service web. Assurez-vous que vous savez ce que le SAVON d'Action est avant la connexion.Lire http://www.oreillynet.com/xml/blog/2002/11/unraveling_the_mystery_of_soap.html pour en savoir plus sur le sujet.