#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 для своей собственной службы, сообщил бы мне об их надежности тревожными звоночками. 🙂