2012-03-16 12 views
7

Próbuję dostać wniosek XML:dlaczego getLastRequest nie zwraca niczego?

$cgProxy = new SoapClient($WSDL_URL,array('trace' => 1)); 

try { 
     $result = $cgProxy->OrderCreate($cgOrder); 

} catch (SoapFault $exc) { 
     var_dump($exc); 
     echo "Request:\n" . $cgProxy->__getLastRequest(), "\n"; 
     echo "Response:\n" . $cgProxy->__getLastResponse() . "\n"; 
} 

Dzięki temu pojawia się błąd serwera mydło z wysypiska $ exc. Ale getLastRequest nie wydaje się zwracać niczego. jakieś pomysły?

Próbowałem również z htmlspecialchars() i htmlentities() bez powodzenia. . .

+0

Czy kiedykolwiek to rozwiązałeś? Mam również sytuację, w której wysyłam zestaw parametrów, a mimo to __getLastResponse() pokazuje puste opakowania SOAP bez podania parametrów. – TonyTheJet

+0

Miałem ten sam problem, nic nie było wyświetlane. Znalazłem odpowiedź w kodzie źródłowym strony (otwórz ją w menu kontekstowym przeglądarki). –

Odpowiedz

11

getLastRequest():

Ta metoda działa tylko wtedy, gdy obiekt SoapClient został stworzony z opcją śledzenia wartość true.

$client = new SoapClient("http://myservice/?WSDL",array("trace"=>1)); 

w tym przypadku działa dla mnie.

+0

Mam również ten problem i mam włączone śledzenie, więc to nie rozwiązuje problemu. – SublymeRick

+0

W porządku, problem istniał dla mnie z ustawionym śledzeniem na true, jak pokazałem w moim oryginalnym wpisie. – evan

3

Może dlatego, że kod XML w przeglądarce nie jest drukowany jako ciąg. Jeśli tak, spróbuj coś takiego:

echo "REQUEST:\n" . htmlentities($client->__getLastRequest()) . "\n"; 
+0

Nie pomogło mi to, ale warto było sprawdzić, czy jest to możliwe. – johnsnails

1

Wiem, że to późno, ale ...

Jest możliwe, że nigdy nie są faktycznie składania wniosku. Jeśli PHP nie uda się utworzyć wywołania SOAP, nigdy nie dojdziesz do punktu, w którym wysyłasz żądanie XML. Sprawdź swój dziennik błędów pod kątem błędów PHP SOAP.

Powiązane problemy