Могу ли я проверить, поддерживает ли веб-сервис SOAP определенный WebMethod? - PullRequest
1 голос
/ 20 сентября 2008

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

Есть ли способ сделать это?

Ответы [ 3 ]

2 голосов
/ 20 сентября 2008

Получите WSDL (добавьте? Wsdl к URL) - вы можете разобрать это любым способом.

1 голос
/ 20 сентября 2008

Модульное тестирование веб-службы, чтобы убедиться, что его подписи не сломались. Когда вы пишете код, который нарушает сигнатуру метода, вы узнаете и сможете соответствующим образом настроить другие приложения.

Или просто не ломайте веб-сервисы и не публикуйте их так, чтобы вы могли их версиями. Как и в http://services.domain.com/MyService/V1.1/Service.asmx (для .NET), чтобы ваши приложения, использующие v1.1, не ломались при публикации v1.2 и вносили критические изменения.

Я бы также проверил с помощью внутреннего UDDI-сервера, действительно ли это очень сложная задача для управления вашими веб-сервисами. Использование Зеленых страниц UDDI расскажет вам, что вы хотите знать об услуге.

0 голосов
/ 20 сентября 2008

Когда вы делаете SOAP-запрос, вы просто отправляете HTTP-запрос на сервер. Если сервер понимает это, он ответит HTTP 200 и некоторым XML обратно, если это не так, он отправит вам некоторый код ошибки HTTP (404, 500, ...)

Не существует общего способа просить о существовании «метода», предоставляемого веб-службой. Попробуйте использовать WSDL, если он автоматический, или просто попытайтесь использовать «метод» и проверьте наличие ошибки в ответе (вам не нужно отправлять исключение пользователю ...)

Кроме того, я не знаю, правильно ли я вас понял, но вы думаете о том, чтобы дважды запросить сервер, один раз, чтобы проверить, существует ли метод, и второй, чтобы сделать фактический вызов, если он есть? Я бы просто проверил ошибку, если это не так, и продолжил бы в обычном режиме, если это произойдет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...