Web服务如何处理那些格式不正确的客户请求?这些请求会被抛弃吗?我们应该如何装配Web服务,以处理以任何格式出现的任何要求?
如果客户端发送格式不正确或者是无用的SOAP请求,服务可以拒绝这个要求,或者返回一个SOAP错误。在这样的情况下,SOAP错误必须提示错误代码“env:Client”,服务必须在SOAP错误的<defail元素中提供错误的额外信息。
如果你想让你的服务能够为任何类型的请求服务,那么你必须使用<xsd:any的框架结构,定义你的服务去接受一个输入信息。例如,WSDL输入消息必须如下描述:
<wsdl:message name="anyInput"
<wsdl:part name="body" element="xsd:any"/
</wsdl:message
注意,消息结构是WS-I不兼容的,所以我不推荐你以这种方式定义服务。同时这种消息定义不能提供关于你的可能客户端和输入消息的合适格式的任何信息。在你的WSDL文档中定义你对于输入消息格式的期望,是一个不错的主意。
同时,在构建你的服务的时候,你可能还需要使用“消息”格式类型处理。当使用这种类型的处理时,你的SOAP服务器不需要处理SOAP消息体。它只是将应用程序SOAP作为DOM处理。你的应用程序必须处理DOM。(当然,必须假设消息都是以XML的形式出现。)
我不能确定,你试图让你的服务可以接受任何类型的请求有任何的价值。例如,你提供一个可以接受商业零售订单的服务,那么输入消息必须包含一个XML文档,该文档根据你的零售框架进行定制。那么当你的服务接受到一个保险合同的时候,它应该如何处理呢?