我们的Web服务由于各种原因(例如减少客户端的延迟)分布在不同的服务器上,并且它们并不总是都是最新的。由于特定的Web服务太旧而不存在方法不存在,而不是抛出异常,如果我们可以让客户端在调用之前检查服务是否响应给定的方法,那就更好了。 ,以及以其他方式禁用该功能(或解决它)。
有办法吗?
答案 0 :(得分:2)
获取WSDL(将URL附加到URL) - 您可以按照自己喜欢的方式解析。
答案 1 :(得分:1)
对Web服务进行单元测试,以确保其签名不会中断。当您编写破坏方法签名的代码时,您将知道并可以相应地调整其他应用程序。
或者只是不要破坏Web服务并以允许syou对其进行版本化的方式发布它们。与在http://services.domain.com/MyService/V1.1/Service.asmx(对于.NET)一样,这样当您发布v1.2并进行重大更改时,使用v1.1的应用程序不会中断。
我还会检查使用内部UDDI服务器,如果它确实是管理您的Web服务的大部分。使用UDDI的绿页将告诉您您想要了解的服务。
答案 2 :(得分:0)
当您发出SOAP请求时,您只是向服务器发送HTTP请求。如果服务器理解它,它将使用HTTP 200和一些XML回复,如果不是,它将向您发送一些错误HTTP代码(404,500,...)
没有一般方法可以询问Web服务所暴露的“方法”的存在。尝试使用暴露的WSDL(如果它是自动的),或者只是尝试使用“方法”并检查响应中的错误(您不必向用户发送异常......)
另外,我不知道我是否理解你,但你想要两次查询服务器,一次检查方法是否存在,第二次是实际调用它是否存在?如果没有,我会检查错误,如果确实如此,则继续正常。