2010-07-29 9 views
1

J'essaie d'appeler le service Web PersonalDetails_Update en lui transmettant un tableau de valeurs. Ces valeurs sont écrites avec succès dans la base de données pour laquelle le service Web est conçu. Cependant, il est également supposé renvoyer un ID pour l'enregistrement écrit dans la base de données. Mais je ne reçois rien en retour. Juste un écran vide sans XML ou source sous-jacente.Dépannage du service Web SOAP

Lorsque vous utilisez getLastRequest, je reçois cette erreur:

Fatal error: Uncaught SoapFault exception: [Client] Function ("getLastRequest") is not a valid method for this service in 

code utilisé pour transmettre des données au service Web et en-têtes de demande/réponse:

$client->PersonalDetails_Update(array('personaldetails' => $params)); 
printf("<br/> Request = %s </br>", htmlspecialchars($client->getLastRequest())); 
$result = $client->__getLastResponse(); 
$header = $client->__getLastResponseHeaders(); 

Lorsque vous utilisez getLastResponse et getLastResponseHeaders, je ne » Ne rien récupérer.

Répondre

3

vous avez oublié le "__":

printf("<br/> Request = %s </br>", htmlspecialchars($client->__getLastRequest())); 

votre client de savon pense "getLastRequest" est une méthode d'un service de savon de cette façon, pas une méthode client de savon.

également vous devez nous dire quel client de savon vous utilisez. Je suppose que vous utilisez php client intégré de savon ...

utilisation de la méthode __soapCall pour être sûr, vous faites une demande au service:

try { 
    $result = $client->__soapCall('PersonalDetails_Update', array('personaldetails' => $params)); 
} catch (SoapFault $exception) { 
    echo 'soap fault occured: '.$exception->getMessage().'<br/>'; 
} 

vous devriez vérifier si la valeur retournée est un savon faute .. voir le manual

+0

Merci pour votre inscription. Lorsque vous utilisez __soapCall comme vous l'avez écrit, j'obtiens l'erreur suivante: Erreur irrécupérable: exception SoapFault non interceptée: [soap: Serveur] Le serveur n'a pas pu traiter la requête. ---> Référence d'objet non définie sur une instance d'un objet. en – chocolatecoco

+0

Pour répondre à votre question, oui j'utilise le standard PHP Soap Client. – chocolatecoco

+0

c'est pourquoi je vous ai dit de vérifier si la réponse est une soapfault;). l'erreur que vous obtenez est l'erreur de service de savon, la demande envoyée par le client et la réponse reçue correctement. utilisez un try {} catch (SoapFault $ e) {} .... la raison pour laquelle "Le serveur n'a pas pu traiter la requête" est une question différente. vous devez vérifier vos paramètres de requête ou déboguer le serveur. –

Questions connexes