svcutil.exe — Как получить WSDL

#linux #soap #svcutil.exe

#linux #soap #svcutil.exe

Вопрос:

Я работаю с интерфейсом SOAP. У поставщика интерфейса возникли проблемы с получением полного WSDL (длинная история). Они попросили меня использовать svcutil.exe для генерации всего, что мне нужно. Из того, что я могу сказать, svcutil.exe

  • требуется Windows — у меня нет доступного окна Windows
  • генерирует C # или VisualBasic

Было бы здорово, если бы он мог просто выдавать WSDL. Или, если есть что-то, что я могу сделать из Linux, это тоже было бы здорово.

Есть ли у меня какие-либо варианты отсюда, или мне просто нужно дождаться, пока провайдер предоставит мне WSDL.

Я думаю, вопрос в том, учитывая URL и инструкции по использованию svcutil.exe как я могу написать код для использования SOAP-сервиса только с использованием Linux?

Ответ №1:

При использовании Linux вы могли бы сохранить его через curl

    curl url > service.wsdl
  

итак, чтобы получить weatherForcast WSDL

    curl http://www.webservicex.net/WeatherForecast.asmx?WSDL > weatherForcast.wsdl
  

Комментарии:

1. Кроме того, разве этот провайдер не предлагает веб-сервис для обеспечения независимости от платформы?

2. 1 для простого решения, выигравшего runaway. Трудно поверить, что поставщик услуг просто не сказал: «Перейдите к конечной точке и добавьте ?WSDL», а не предложил использовать инструмент .net разработчику linux (и, предположительно, Java?).

Ответ №2:

@grantk уже продемонстрировал самый простой метод: если вы знаете, где размещен WSDL, вы можете просто извлечь документ с помощью выбранного вами инструмента.

Но, поскольку вы конкретно спрашивали об использовании SVCUtil: вы могли бы найти окно Windows, использовать SVCUtil для извлечения WSDL, а затем вернуться к вашему стеку linux (и Java?) и сгенерировать клиентские прокси из этого WSDL для вызова службы, используя выбранную вами платформу веб-сервиса.

Если целевая служба поддерживает WS-MetadataExchange или обнаружение веб-службы XML, SVCUtil найдет и загрузит WSDL для вас: смотрите это руководство на веб-сайте Microsoft MSDN.

Используя пример службы прогноза погоды, который использовал @grantk, вы можете попросить SVCUtil запросить службу и загрузить метаданные следующим образом:

 svcutil /t:metadata http://www.webservicex.net/WeatherForecast.asmx
  

(Я уверен, что в мире Linux есть похожие инструменты для этого с использованием WS-MetadataExchange, но мой опыт связан с SVCUtil.)

Комментарии:

1. PS. За мои небольшие деньги любой провайдер, который не может предоставить WSDL для своей собственной службы, сообщил бы мне об их надежности тревожными звоночками. 🙂