2009-08-18 5 views
1

So habe ich eine App, die den Zend Amazon Web Services Client verwendet. Ich bekomme jetzt einen Fehler vom Dienst, und ich möchte die rohe Anfrage und Antwort sehen.Wie debugge ich Webdienste bei der Verwendung von Zend_Rest_Client

Ich kann keinen Weg finden, dies in der Dokumentation zu tun! Diese Klasse implementiert Zend_Rest_Client, so dass es scheint, dass es eine rawResponse() -Methode geben sollte, aber nicht. Dies ist auf einem Produktionsserver und ich bin hinter einer Firewall, so kann ich nicht zu Fiddler Proxy.

Irgendwelche Vorschläge?

Antwort

3

Zend_Rest_Client erstreckt Zend_Service_Abstract, die wiederum eine getHttpClient() Methode implementiert, die eine Zend_Http_Client zurückgibt Beispiel, das ein getLastResponse()-Verfahren offenlegt, das eine Zend_Http_Response Instanz zurückgibt, die wiederum ein getBody()-Verfahren offenbart. Puh, das ist OOP, denke ich :).

Lassen Sie uns unsere Sprache sprechen, aber:

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

Das ist es.

EDIT:

Es scheint, dass Zend_Service_Abstract::getHttpClient() statisch ist, so kann man es auch wie folgt aufrufen:

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

Aber ich würde es nicht empfehlen. Sie müssen genau wissen, wann die Methode aufgerufen werden soll, da der HTTP-Client mit einer Antwort gefüllt werden muss. Ganz zu schweigen davon, dass statische Methoden nur eine Art von Globalen sind, was schlecht ist.

+0

Das ist so süß. Vielen Dank. –

0

Die Antwort ist also die amazon-Klasse zu überlasten, und drucken Sie das $ response-> getBody() -Methode in ItemSearch/itemLookup

0

wenn Sie das tatsächliche xml betrachten möchten, erhalten haben, dann sollten Sie:
$ actual_xml = htmlentities ($ client-> getHttpClient() -> getLastResponse() -> getBody());
echo $ actual_xml;

Hinweis.
Wenn Sie dies in eine Datei schreiben möchten, verwenden Sie htmlspecialchars_decode ($ actual_xml);

Verwandte Themen