SAVON: il semblerait qu'on ai pas de document XML
Je suis en train de créer un web service, mais avant je fais, je vais essayer d'obtenir un exemple simple que j'ai trouvé sur internet pour travailler d'abord mais je reçois l'erreur suivante:
Fatal error: Uncaught SoapFault exception: [Client] looks like we got no XML document in C:\Documents and Settings\geoff\My Documents\Websites\jquery\index.php:20 Stack trace: #0 [internal function]: SoapClient->__call('getStockQuote', Array) #1 C:\Documents and Settings\geoff\My Documents\Websites\jquery\index.php(20): SoapClient->getStockQuote(Array) #2 {main} thrown in C:\Documents and Settings\geoff\My Documents\Websites\jquery\index.php on line 20
Je suis avec nusoap v1.94
Mon service web code ressemble à ceci:
function getStockQuote($symbol) {
$price = '1.23';
return $price;
}
require('nusoap.php');
$server = new soap_server();
$server->configureWSDL('stockserver', 'urn:stockquote');
$server->register("getStockQuote",
array('symbol' => 'xsd:string'),
array('return' => 'xsd:decimal'),
'urn:stockquote',
'urn:stockquote#getStockQuote');
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA)
? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);
Je sais la cause de l'un est d'avoir d'espace avant ou après vos balises php dans votre script serveur, mais ce n'est pas le cas. Il a été me rend fou pendant des heures! Toute aide serait grandement appréciée.
OriginalL'auteur geoffs3310 | 2010-11-30
Vous devez vous connecter pour publier un commentaire.
Marque d'ordre des octets (BOM) aurait le même effet que les espaces avant les balises php.
Ici vous trouver un bout de code PHP pour détecter et supprimer une NOMENCLATURE. Assurez-vous de configurer votre éditeur de ne pas insérer la NOMENCLATURE de nouveau.
OriginalL'auteur rik
Assez tard, mais l'ajout de ma dose de bénéfice d'autrui. J'ai eu d'erreur similaire quand j'ai changé mon serveur Apache à partir de 2.2 à 2.4 et PHP 5.4.10 à 5.6.18 sur windows. Client application en php 5.6.1. Pour résoudre le problème, j'ai effectué les opérations suivantes:
Passé SAVON paramètre de version de SoapClient:
'soap_version' => SOAP_1_1
Sur le serveur php.ini fichier de configuration, j'ai ajouté:
always_populate_raw_post_data = -1
OriginalL'auteur mvsagar
Un peu en retard, mais ce genre d'erreur est souvent causée par côté serveur SOAP (sens) problème :
Ce message vient de vous informer que le SAVON client n'a pas reçu format XML (par exemple. un message d'erreur à la place de XML).
OriginalL'auteur Benj
Cette erreur s'affiche également si un soap XML de la réponse contient des caractères Unicode.
Dans mon cas, c'était le CARACTÈRE de REMPLACEMENT (
U+FFFD
).Dans les détails, l'intérieur de la fonction de la SoapClient
xmlParseDocument
jeux dexmlParserCtxtPtr->wellFormed
propriétéfalse
après l'analyse. Il jette d'erreur soap aveclooks like we got no XML document
.https://github.com/php/php-src/blob/master/ext/soap/php_packet_soap.c#L46
OriginalL'auteur Andrei Zhamoida
ensemble
always_populate_raw_post_data = -1
en php.fichier ini (en supprimant le;
), puis redémarrez le serveur. Il a bien fonctionné pour moi.OriginalL'auteur Ipsita Rout
J'ai reçu ce message d'erreur lorsque j'étais en interaction avec l'API Magento qui était en train de charger un modèle, et il jetait un avertissement avant de sortir de la réponse xml qui a été la cause de l'erreur.
Pour le fixer, vous pouvez simplement désactiver les avertissements sur la fonction de l'API:
error_reporting(0);
Ce que jamais la fonction de l'API que vous appelez, si c'est votre propre fonction de l'API de le mettre là-bas, si ce n'est pas votre propre, vous aurez besoin de déboguer à trouver lequel.
fonctionne pour moi merci
OriginalL'auteur Kus
Comme je le comprends, l'erreur du SAVON analyseur quand il s'agit de XML non valide.
Comme il a été avec moi.
Comme un résultat, j'ai obtenu le code suivant:
Si quelqu'un va dire dans les commentaires ce qu'un symbole, je vous en seront reconnaissants.
__getLastResponse()
m'a aidé à identifier les caractères non validesOriginalL'auteur borodatych
Essayez de regarder dans votre journal du serveur. Si vous utilisez nginx, s'il vous plaît regarder dans /var/log/nginx/erreur.journal.
si "Permission denied" pop-up, s'il vous plaît changer liées dir propriétaire.
Espérons que cela fonctionnera.
OriginalL'auteur Boush
Une autre solution possible...
J'ai eu le même problème, je devenais fou. La solution était simple.
La vérification de mon serveur.. car il s'agit d'une erreur de serveur.
Mon erreur était que j'avais mis "rcp" au lieu de "rpc".
OriginalL'auteur Vrian7