我今天遇到了一个奇怪的,是这样的:
我正在为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在SOAP1.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错误消息是:
只有元素内容类型的元素'detail‘不能有文本内容。
有人知道我做错了什么吗?
提亚
K
发布于 2010-02-16 20:27:32
SOAP1.1XMLschema (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
https://stackoverflow.com/questions/2273809
复制相似问题