2009-08-18 4 views
1

J'ai donc une application qui utilise le client Zend Amazon Web Services. Je reçois maintenant une erreur du service, et je veux voir la demande brute et la réponse.Comment puis-je déboguer des services Web lors de l'utilisation de Zend_Rest_Client

Je ne trouve pas un moyen de faire cela dans les docs! Cette classe implémente Zend_Rest_Client donc il semble qu'il devrait y avoir une méthode rawResponse() mais il n'y en a pas. C'est sur un serveur de production et je suis derrière un pare-feu, donc je ne peux pas me substituer au fiddler.

Des suggestions?

Répondre

3

Zend_Rest_Client étend Zend_Service_Abstract $ response-> getBody(), ce qui met en œuvre une méthode getHttpClient(), qui renvoie une Zend_Http_Client instance, qui expose une méthode getLastResponse(), qui renvoie une instance Zend_Http_Response, qui expose une fois de plus une méthode getBody(). Ouf, c'est OOP je suppose :).

Parlons notre langue bien:

$restClient->getHttpClient()->getLastResponse()->getBody(); 

Voilà.

EDIT:

Il semble que Zend_Service_Abstract::getHttpClient() est statique, vous pouvez même l'appeler comme ceci:

Zend_Service_Abstract::getHttpClient()->getLastResponse()->getBody(); 

Mais je ne le recommanderais pas. Vous devez savoir exactement quand appeler la méthode, car le client HTTP doit être rempli avec une réponse. Sans oublier que les méthodes statiques sont juste une sorte de globals, ce qui est mauvais.

+0

C'est tellement mignon. Merci. –

0

La réponse est donc de surcharger la classe amazone, et imprimer la méthode itemSearch/itemLookup

0

si vous souhaitez voir le fichier XML reçu réelle, vous devez:
$ actual_xml = htmlentities ($ client-> getHttpClient() -> getLastResponse() -> getBody());
echo $ actual_xml;

note.
si vous voulez écrire ceci dans un fichier, utilisez htmlspecialchars_decode ($ actual_xml);

Questions connexes