Осмотрите XML, созданный вызовом PHP SoapClient прежде, чем отправить запрос

Улучшение IDE Проводник Кода Моделиста

я знаю, что это - повторение, но это должно быть в ответе самостоятельно. Это - мой номер 1, не может обойтись без, инструмент необитаемого острова.

38
задан hakre 2 January 2013 в 18:43
поделиться

2 ответа

Предварительное замечание: Чтобы успешно использовать метод __ getLastRequest () , вы должны установить для параметра 'trace' значение true при создании клиента:

$client = new SoapClient('wsdldoc.asmx?WSDL', array('trace' => TRUE));

Таким образом, ваш запрос по-прежнему будет отправлен (и, следовательно, по-прежнему не будет выполнен), но вы можете проверить отправленный xml впоследствии , вызвав $ client -> __ getLastRequest () .


Основной ответ:

Чтобы получить доступ к сгенерированному XML до / без отправки запроса, вам необходимо создать подкласс SoapClient, чтобы переопределить __ doRequest ( ) метод:

class SoapClientDebug extends SoapClient
{
  public function __doRequest($request, $location, $action, $version, $one_way = 0) {
      // Add code to inspect/dissect/debug/adjust the XML given in $request here

      // Uncomment the following line, if you actually want to do the request
      // return parent::__doRequest($request, $location, $action, $version, $one_way);
  }
}

Затем вы использовали бы этот расширенный класс вместо исходного SoapClient при отладке вашей проблемы.

81
ответ дан 27 November 2019 в 03:20
поделиться

Я не верю, что есть способ увидеть любой создаваемый XML ... в основном потому, что функция не работает при попытке создать / передать его.

Не уверен если вы уже пробовали, но если вы '

1
ответ дан 27 November 2019 в 03:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: