Могу ли я проверить, поддерживает ли веб-служба SOAP определенный веб-метод?

StackOverflow https://stackoverflow.com/questions/108499

  •  01-07-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top