我已經使用PHP 5.3創建了一個基於WSDL的SOAP Web服務。我使用Zend Framework來處理服務,而ZF反過來又被分層到PHP的內置SoapServer類上。無法處理PHP的SoapServer-> handle()方法中的錯誤
在使用SoapUI進行測試時,我發現傳遞無效類型的參數(例如,在WSDL定義整數時傳遞字符串)導致了空響應。挖掘到的代碼,我發現,當ZF調用SoapServer->手柄(),執行與這種致命的錯誤死亡:
Fatal error: SOAP-ERROR: Encoding: Violation of encoding rules
錯誤是有道理的,但對我的生活,我無法弄清楚如何捕捉它,以便我可以優雅地處理它。我的理解是,handle()應該拋出一個異常,但它只是簡單的死去。
但這裏的地方變得很奇怪....
運行具有了SoapUI多個測試,未做任何代碼更改,會產生不同的結果。大多數情況下,我會得到空的答覆,但偶爾我會找回一個SoapFault(我期望的!)。然而,這並不一致,我無法弄清楚是什麼觸發它。據我所知,我關閉了SoapUI中的緩存功能,以及WSDL緩存。我不知道這是SoapUI還是PHP。正如我所說,奇怪。
相關,我發現這個老PHP錯誤:
聽起來可怕像我自己的問題。但我並不完全相信這是我的問題,主要是因爲涵蓋所有這些內容的PHP文檔以及ZF的文檔都非常不完整。因此,我可能只是在做一些非常錯誤的事情而不知道它。鑑於此,我很想看到一個簡單的外殼,顯示捕捉和處理錯誤的正確方法。但我會接受任何人可能提供的幫助。
這是否報告錯誤相關? http://bugs.php.net/bug.php?id=49513 – MrWhite 2010-07-16 19:04:06
我確實相信。實際上,它看起來像所有這些都是相關的: http://bugs.php.net/bug.php?id=36629 http://bugs.php.net/bug.php?id=50547 http://bugs.php.net/bug.php?id=50895 http://bugs.php.net/bug.php?id=50547 http://bugs.php.net/bug.php? ID = 49513 – 2010-08-25 16:42:01