2012-03-16 2 views
7

Я пытаюсь получить запрос XML:Почему getLastRequest ничего не возвращает?

$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"; 
} 

С этим я получаю ошибку мыло сервера от $ отл свалку. Но getLastRequest, похоже, ничего не возвращает. Есть предположения?

Я также пробовал с htmlspecialchars() и htmlentities() без успеха. , ,

+0

Вы когда-нибудь разрешали это? У меня также есть ситуация, когда я отправляю массив параметров, и все же __getLastResponse() показывает пустые оболочки SOAP без передачи параметров. – TonyTheJet

+0

У меня была такая же проблема, ничего не отображалось. Я нашел ответ в исходном коде страницы (открыть его через контекстное меню браузера). –

ответ

11

getLastRequest():

Этот метод работает только если объект SoapClient был создан с опцией трассировки установлен в TRUE.

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

в этом случае работает для меня.

+0

У меня тоже есть эта проблема, и у меня есть трассировка, поэтому это не устраняет проблему. – SublymeRick

+0

Правильно, проблема существовала для меня со следом, установленным в true, как я показал в своем оригинальном посте. – evan

3

Возможно, потому, что XML в вашем браузере не печатается как строка. Если это так, попробуйте что-то вроде этого:

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

Не помог мне, но не стоит проверять/осознавать это как возможность. – johnsnails

1

Я знаю, что это поздно, но ...

Ее возможно, вы никогда не на самом деле делает запрос. Если PHP не сможет создать SOAP-вызов, вы никогда не дойдете до того момента, когда вы отправляете XML-запрос. Проверьте журнал ошибок для ошибок SOAP PHP.

Смежные вопросы