我正在开发一个新的Soap Web服务。以前的Web服务用于在遇到错误时返回array('error'=>"Please login first");
。根据我所读到的内容,最好使用SoapFault。
以下行用于调用SoapFault:
throw new SoapFault($faultcode, $faultstring, $faultactor, $faultdetail, $faultname, $headerfault);
我看到Soap有预定义的代码,即:VersionMismatch、MustUnderstand、Client和Server。
请回答/更正以下内容以帮助我理解:
- 我可以使用我自己的自定义故障代码,如"Auth"或"Error55"。
- 有些使用数组("namespace"、"errorcode")。应该使用这个吗?命名空间的值应该是什么
- 我认为对于用户来说,faultstring可以是任何东西,比如"Please login first"
- 犯错者的目的是什么
- faultdetail是一个数组,包含故障的额外细节。什么样的细节
- faultname的目的是什么
- headerfault的目的是什么
我认为通常不鼓励在一个SO问题中提出多个问题。此外,阅读SOAP规范的第4.4节"SOAP故障"可以回答大部分问题。
-
故障代码
faultcode元素用于软件提供用于识别故障的算法机制。故障代码必须为存在于SOAP Fault元素中,并且faultcode值必须是第3节中定义的合格名称。SOAP定义了一个小集合包含基本SOAP故障的SOAP故障代码。。。命名空间标识符对于[默认值],faultcode值为"http://schemas.xmlsoap.org/soap/envelope/"
-
故障字符串
faultstring元素旨在提供人类可读的故障的解释,不用于算法处理。
-
故障因素
"faultactor元素旨在提供有关谁的信息导致故障发生在消息路径内(请参阅第2节)。它类似于SOAP actor属性(请参见第4.2.2节),但是指示头条目的目的地,它指示故障源。faultactor属性的值是一个URI识别来源。不起最终作用的应用程序SOAP消息的目的地必须在中包含faultactor元素SOAP Fault元素。消息的最终目的地可能使用faultactor元素显式指示它生成了故障(另请参阅下面的详细元素)。"
-
faultdetail是一个字符串,而不是数组,应该包含
与主体元素相关的应用程序特定错误信息