Fatal error: Uncaught exception de type soapfault: [HTTP] Erreur de Récupérer les en-têtes http
Je suis en train de la sortie de "Hello World" à l'aide de XML, mais je suis de l'exception suivante dans ma page php:
Fatal error: Uncaught exception de type soapfault: [HTTP] Erreur de Récupérer les en-têtes http dans C:\wamp\www\Web_Service\SampleXML\index.php:4 la trace de Pile:
#0 [interne]: SoapClient->_doRequest('<?xml version="...', 'http://localhos...', 'urn:localhost-s...', 1, 0)
#1 [interne]: SoapClient->_call('getHelloWorld', Array)
#2 C:\wamp\www\Web_Service\SampleXML\index.php(4): SoapClient->getHelloWorld()
#3 {principal} jeté dans C:\wamp\www\Web_Service\SampleXML\index.php sur la ligne 4
index.php
<?php
$client = new SoapClient('service.wsdl');
$response = $client->getHelloWorld();
echo $response;
?>
service.wsld
<?xml version = '1.0' encoding = 'UTF-8' ?>
<definitions name = "Web Service"
targetNamespace = 'http://example.org/service'
xmlns:tns = 'http://example.org/service'
xmlns:soap = 'http://schemas.xmlsoap.org/wsdl/soap/'
xmlns:xsd = 'http://www.w3.org/2001/XMLSchema'
xmlns:soapenc = 'http://schemas.xmlsoap.org/soap/encoding/'
xmlns:wsdl = 'http://schemas.xmlsoap.org/wsdl/'
xmlns = 'http://schemas.xmlsoap.org/wsdl/' >
<!-- Message -->
<message name='getHelloWorld'>
<part name='response' type='xsd:string' />
</message>
<!-- Operations offered -->
<portType name = 'PortType'>
<operation name = 'getHelloWorld'>
<!-- Target Name Space -->
<output message = 'tns:getHelloWorld' />
</operation>
</portType>
<!-- Binding Element -->
<binding name = 'Binding' type = 'tns:PortType'>
<soap:binding style='rpc' transport='http://schemas.xmlsoap.org/soap/http' />
<operation name='getHelloWorld'>
<soap:operation soapAction = 'urn:localhost-service#getHelloWorld' />
<!-- Output -->
<output>
<soap:body use='encoded' namespace='urn:locahost-service' encodingStyle='http://schemas.xmlsoap.org/soap/encoding/' />
</output>
</operation>
</binding>
<!-- Define the service -->
<service name='Service'>
<port name='Port' binding='Binding' >
<!-- Location -->
<soap:address location='http://localhost/Web_Service/SampleXML/soap-server.php' />
</port>
</service>
</definitions>
soap-server.php
<?php
function getHelloWorld() {
return "Hello World";
}
ini_set("soap.wsdl_cache_enabled", "0");
$server = new SoapServer('service.wsdl');
$server->addFunction("getHelloWorld");
$server->handle();
?>
Ai-je raté quelque chose dans le code?
- si vous appelez soap-server.php directement il y a des erreurs?
- pas d'erreurs. juste une page blanche.
- et lorsque vous affichez la source voyez-vous de la sortie?
- pas de sortie dans le code source.
- alors, peut-être votre soapserver n'est pas initialisé, ajouter un peu de la manipulation d'exception ou une façon simple de vérifier si elle est en cours de création?
- faire de l'exploitation forestière dans votre serveur soap, par exemple, de vérifier toutes les valeurs de retour de toutes les fonctions qui ont un, connectez-vous à eux. Aussi journal s'inscrit savon fonctions sont appelées. Probablement la fonction n'est même pas appelé encore? Que serait un problème beaucoup plus important alors juste de voir une exception sur les en-têtes. Ainsi, les règles de résolution des problèmes de base s'appliquent dans PHP. Activer le rapport d'erreur d'au plus haut niveau, journal des erreurs en PHP. Suivez le journal des erreurs.
Vous devez vous connecter pour publier un commentaire.
essayer de mettre cette ligne,
ou mettre cela en php.ini
Je suppose que c'est trop tard, mais j'ai le même problème. J'ai essayer le délai d'attente du socket mais ça ne fonctionne pas.
Mon problème est que le client et le serveur où dans le même serveur physique. Avec le code client travaillant dans le même serveur physique , j'obtiens cette erreur, mais, avec le même code client déplacé à mon localhost, de demander au serveur, (le client et le serveur a été exécuté en deux styles différents mechines) tous fonctionne bien.
Peut-être qui peut aider quelqu'un d'autre!
J'ai eu ce problème avec une forte appels SOAP, la solution swich hors KeepAlive dans httpd.conf de apache.
Ajouter KeepAlive Arrêt de httpd.conf et redémarrer apache.
Je tiens juste à signaler que cette erreur est déclenchée lorsque vous essayez de vous connecter à un serveur et de ce serveur répond avec des données non valides ou ne répond pas à tous.
Augmenter le délai d'attente pourrait être utile, mais seulement dans le contexte que le serveur met trop de temps à répondre, comme l'a dit vous pouvez augmenter la valeur en php.ini
default_socket_timeout = 200