2010-06-02 47 views
2

我試圖讓PHP正確連接到和SoapClient使用一個WSDL缺少名稱,它連接(如發現WSDL)不錯,但隨後給了我以下錯誤:PHP SoapClient的錯誤 - 爲<fault>

Fatal error: Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Missing name for <fault> of 'invokeService' 

的PHP代碼如下:

$client = new SoapClient("wsdl.wsdl"); 

而且在它的失敗WSDL文件中的XML如下:

<portType name="invokePort"> 
    <operation name="invokeService"> 
     <input message="wsdlns:invokeRequest"/> 
     <output message="wsdlns:invokeResponse"/> 
     <fault message="soap:fault"></fault> 
    </operation> 
    </portType> 

任何想法有什麼不對?

感謝

回答

1

好,Missing name for <fault>聽起來相當不言自明。您是否嘗試向故障元素添加屬性「名稱」?

UPDATE:關於到Missing <message> with name 'soap:fault'錯誤,你可以嘗試以下方法:

<message name="MyFaultName"/> 
<portType> 
    <!-- ... --> 
    <fault name="MyFaultName"> 
     <soap:fault name="MyFaultName" use="literal"/> 
    <fault> 
</portType> 

不知道它會不會再抱怨等問題,雖然。手動創建WSDL是一個真正的痛苦,我建議你尋找sometool從源代碼爲你生成它。

+0

感謝您的回覆。當向故障標籤添加故障名稱時,它會給出以下錯誤: 缺少名稱爲'soap:fault'的 Probocop 2010-06-02 14:45:31

+0

請參閱更新的答案。 – nuqqsa 2010-06-02 15:28:12