Я пытаюсь вернуть SoapFault из PHP SoapServer, но застрял в создании правильного формата ответа.PHP SoapFault detail namespace
При обработке исключений, я возвращаю:
$detail = "message";
return new SoapFault("Client", "ValidationException", null, $detail, "ValidationException");
и ответ выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Client</faultcode>
<faultstring>ValidationException</faultstring>
<detail>
<ValidationException>
<message>message</message>
</ValidationException>
</detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Однако, я хотел бы ответ, чтобы выглядеть следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Client</faultcode>
<faultstring>ValidationException</faultstring>
<detail>
<ns2:ValidationException xmlns:ns2="http://service.applicationsnet.com/soap/">
<message>message</message>
</ns2:ValidationException>
</detail>
</SOAP-ENV:Fault>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Я пробовал несколько вещей, но безуспешно. Не могли бы вы мне помочь?
Другое дело в пространствах имен, возможно ли изменить пространство имен оболочки SOAP-ENV? Благодарю.
Вы имеете в виду префикс "SOAP-ENV"? Как и название «ENV-SOAP» или «ENVELOPE» или что-то еще? – hakre
Не знаю, возможно ли это (ни по PHP *, ни по SOAP), см. Http://php.net/soapfault.soapfault для справочной страницы PHP об этом. – hakre
Да, я знаю о странице .. Я могу изменить префикс «SOAP-ENV», расширив класс SoapServer и изменив подстроку перед отправкой каждого ответа. Однако основной вопрос, который я задал, касался пространства имен «ns2» в деталях SoapFault , Спасибо за эту мысль. –