我可以检查SOAP Web服务是否支持某种WebMethod吗?

时间:2020-03-06 14:29:13  来源:igfitidea点击:

我们的Web服务由于各种原因(例如减少到客户端的延迟)而分布在不同的服务器上,并且它们并不总是最新的。与其在特定的Web服务太旧而导致方法不存在时抛出异常,不如让我们让客户端在调用该服务之前检查该服务是否响应给定方法,然后禁用该功能,这样会更好(或者解决它)。

有没有办法做到这一点?

解决方案

获取可以以任何方式解析的WSDL(在URL上添加?wsdl)。

对Web服务进行单元测试,以确保其签名不会中断。当我们编写破坏方法签名的代码时,我们将知道并可以相应地调整其他应用程序。

或者只是不要破坏Web服务并以使我们能够对其进行版本控制的方式发布它们。就像http://services.domain.com/MyService/V1.1/Service.asmx(用于.NET)一样,这样一来,发布v1.2并进行重大更改时,使用v1.1的应用程序就不会中断。

如果要管理Web服务真的那么麻烦,我也将使用内部UDDI服务器签出。使用UDDI的绿页将告诉我们有关该服务的了解。

发出SOAP请求时,我们只是向服务器发送HTTP请求。如果服务器能够理解,它将以HTTP 200和一些XML响应,否则,它将向我们发送一些错误的HTTP代码(404、500,...)

没有通用的方法来请求Web服务公开的"方法"的存在。尝试使用公开的WSDL(如果它是自动的),或者尝试使用"方法"并检查响应中的错误(我们不必向用户发送异常...)

另外,我不知道我是否了解我们,但是我们正在考虑两次查询服务器,一次检查该方法是否存在,第二次进行实际调用(如果有)?如果没有,我只会检查错误,如果有,我会正常进行。