2
我試圖從PHP SoapServer返回一個SoapFault,但我堅持創建正確的響應格式。PHP SoapFault詳細命名空間
當處理異常,我返回:
$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
是的,我知道關於頁面..我可以通過在發送每個響應之前擴展SoapServer類和更改子字符串來更改前綴「SOAP-ENV」。但是,我詢問的主要問題是關於SoapFault詳細信息中的「ns2」命名空間。謝謝你的想法。 –