2010-02-16 49 views
0

我奇怪今天一碰上了,它是這樣的:PHP SoapFault不是WSUI架構在soapUI中是否兼容?

我設置了測試套件QAing我的一個Web服務,這是 寫在PHP5 - 利用類SoapFault的等等。

我使用該類將錯誤消息返回給客戶端。例如:

if (!$this->CheckHost(getenv('REMOTE_ADDR'))) 
{ 
    return new SoapFault(S_CLIENT, S_STRING_IP, "", S_DETAIL_IP); 
} 

返回一個的SOAPFault如果客戶沒有被授權...

現在,如果我在soapUI 3.0.1添加一個架構符合斷言它告訴 我返回的消息不符合它的WSDL文件。

WSDL文件由我撰寫,並且不包含實際SoapFault類的描述 。那需要嗎?反正不是因爲 SoapFault在Soap 1.1中被加密了。

實際響應看起來像這樣:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> 
    <SOAP-ENV:Body> 
     <SOAP-ENV:Fault> 
     <faultcode>SOAP-ENV:Client</faultcode> 
     <faultstring>ERR_102</faultstring> 
     <faultactor/> 
     <detail>IP error message</detail> 
     </SOAP-ENV:Fault> 
    </SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

soapUI的錯誤信息是:

元素「細節」與元件僅 內容類型不能有文本內容。

有沒有人有暗示我做錯了什麼?

TIA

ķ

回答

1

的SOAP 1.1 XML模式(http://schemas.xmlsoap.org/soap/envelope/)定義意味着它不能包含只是文本作爲你的錯細節元素

<xs:complexType name="detail"><xs:sequence> 
     <xs:any namespace="##any" minOccurs="0" maxOccurs="unbounded" processContents="lax" /> 
    </xs:sequence> 
    <xs:anyAttribute namespace="##any" processContents="lax" /> 
    </xs:complexType> 

。嘗試改變回復類似於

... 
    <detail><msg>IP error message</msg></detail> 
... 

希望這有助於!

問候,

/OLE eviware.com

+0

THX您的回覆,我給它一個鏡頭後發現,由於某種原因, 「」 .S_SOAP_FAULT_DETAIL_INVALID_TICKET。 「」 得到的轉義爲HTML ltMSGgt。 ..和soapUI給我一個錯誤,指出「無意識的CDATA」。任何想法如何通過錯誤細節? TIA – KB22 2010-02-18 08:04:23