首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SoapFault中不兼容吗?

在SoapFault中不兼容吗?
EN

Stack Overflow用户
提问于 2010-02-16 15:07:58
回答 1查看 2.1K关注 0票数 1

我今天遇到了一个奇怪的,是这样的:

我正在为QAing设置测试套件,这是我的一个web服务,它是用PHP5编写的--利用类SoapFault等。

我使用该类向客户端返回错误消息。示例:

代码语言:javascript
复制
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中已经被规范了。

实际反应如下:

代码语言:javascript
复制
<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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-02-16 20:27:32

SOAP1.1XMLschema (http://schemas.xmlsoap.org/soap/envelope/)将细节元素定义为

代码语言:javascript
复制
   <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> 

这意味着它不能只包含文本,就像你的错。尝试将响应更改为

代码语言:javascript
复制
...
   <detail><msg>IP error message</msg></detail>
...

希望这能有所帮助!

打招呼,

/Ole eviware.com

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2273809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档