Наши веб-службы распределены по разным серверам по разным причинам (например, для уменьшения задержки для клиента), и не всегда все они актуальны. Вместо того, чтобы генерировать исключение, когда метод не существует из-за того, что конкретная веб-служба слишком старая, было бы лучше, если бы мы могли заставить клиента проверять, отвечает ли служба на данный метод перед его вызовом, и в противном случае отключить функцию (или работать вокруг него).
Есть способ сделать это?





Получите WSDL (добавьте? Wsdl к URL-адресу) - вы можете разбирать его как хотите.
Модульное тестирование веб-службы, чтобы убедиться, что ее подписи не нарушаются. Когда вы напишете код, который нарушает подпись метода, вы узнаете и сможете соответствующим образом настроить другие приложения.
Или просто не ломайте веб-сервисы и публикуйте их таким образом, чтобы вы могли их версировать. Как и в http://services.domain.com/MyService/V1.1/Service.asmx (для .NET), так что ваши приложения, использующие v1.1, не сломаются, когда вы опубликуете v1.2 и внесете критические изменения.
Я бы также попробовал использовать внутренний сервер UDDI, если он действительно так удобен для управления вашими веб-сервисами. Использование Зеленых страниц UDDI расскажет вам, что вы хотите знать об услуге.
Когда вы делаете запрос SOAP, вы просто отправляете HTTP-запрос на сервер. Если сервер понимает это, он ответит HTTP 200 и некоторым XML обратно, если нет, он отправит вам код ошибки HTTP (404, 500, ...)
Не существует общего способа узнать о существовании «метода», предоставляемого веб-службой. Попробуйте использовать предоставленный WSDL, если он автоматический, или просто попробуйте использовать «метод» и проверьте наличие ошибки в ответе (вам не нужно отправлять исключение пользователю ...)
Кроме того, я не знаю, хорошо ли я вас понял, но вы думаете о том, чтобы дважды запросить сервер: один раз, чтобы проверить, существует ли метод, и второй, чтобы сделать фактический вызов, если это так? Я бы просто проверил наличие ошибки, если ее нет, и продолжил бы нормально, если она есть.