Ответ 1
Отладка запроса SOAP
- Использование расширения SOAP
Самый простой и лучший * способ отладки запроса SOAP действительно создать расширение SOAP, который регистрирует запрос необработанного SOAP и необработанный ответ SOAP от клиента службы веб - службы или Web, используя следующие функции SoapClient класса:
- SoapClient :: __ getLastRequestHeaders
- SoapClient :: __ getLastRequest
- SoapClient :: __ getLastResponseHeaders
- SoapClient :: __ getLastResponse
Чтобы заставить его работать, вам нужно создать объект SoapClient с включенной опцией trace, как упоминалось в xdazz:
$client = new MySoapClient($wsdlUrl, array('trace' => 1));
а затем запустите ваши вызовы SOAP, завернутые в блок try-catch:
try{
$result = $client->__SoapCall('routeCase', $params);
}catch (\Exception $e){
throw new \Exception("Soup request failed! Response: ".$client->__getLastResponse());
}
При разработке SOAP-решений на PHP также рекомендуется очистить папку PHP tmp при изменении контракта WSDL (см. Путь к папке tmp
в phpinfo()
), чтобы заставить PHP SoapClient загружать файлы WSDL и XSD снова, вместо использования кешированные файлы (до истечения срока их действия).
Кроме того, полезно устанавливать такие параметры, как exceptions
и cache_wsdl
и версию soap_version
при разработке:
$options = array(
'soap_version'=>SOAP_1_2,
'exceptions'=>false,
'trace'=>1,
'cache_wsdl'=>WSDL_CACHE_NONE
);
*Недопустимость отладки с использованием расширения SOAP заключается в том, что ошибки сертификата происходят до фактического запроса или чего-то еще.Таким образом, невозможно использовать getLastRequest() или getLastResponse(), когда есть некорректное подключение.
- Использование Xdebug
Еще один интересный вариант для отладки SoapClient - это установка файла cookie отладки для Xdebug и вашей любимой среды IDE
$client = new SoapClient(
'http://example.loc/index.php/api/v2_soap/?wsdl'
);
$client->__setCookie('XDEBUG_SESSION', 'NETBEANS');
- Использование специализированного SOAP Tracer & Debugger
Специализированные приложения SOAP Trace & Debug также очень полезны: помимо обычных подозреваемых, таких как SoapUI, есть также промежуточные прокси-серверы, такие как Charles, как описано здесь. Недостатком этого метода является то, что добавлено больше уровней и, следовательно, могут возникнуть новые проблемы, например проблемы с рукопожатием.
Есть также некоторые коммерческие отладчики SOAP, которые стоят денег, таких как XML Spy SOAP Debugger или SOAPSonar, которые выполняют валидацию и вызов. В любом случае SoapUI всегда хороший компаньон.
Если вы подозреваете, что на уровне сетевого протокола есть проблема, попробуйте Wireshark, анализатор сетевых протоколов для Unix и Windows.
Журналы, журналы, журналы
Основная информация об ошибках также может быть найдена в журнале PHP и журнале веб-сервера. Убедитесь, что вы включили полную регистрацию ошибок.